Logs on 2022-06-25 (liberachat/#haskell)
| 00:00:20 | × | dsrt^ quits (~dsrt@50.237.44.186) (Ping timeout: 246 seconds) |
| 00:00:37 | × | alp quits (~alp@user/alp) (Ping timeout: 268 seconds) |
| 00:00:51 | <cdsmith> | Hmm... I have a type for which I really want to use <|>, but empty cannot exist. Why, oh why, did Alternative have to put both in the same class? |
| 00:01:18 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 272 seconds) |
| 00:01:22 | <jackdk> | cdsmith: https://hackage.haskell.org/package/semigroupoids . Look for `class Alt` and `(<!>)` specifically |
| 00:02:01 | × | Tuplanolla quits (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:02:16 | <cdsmith> | Ah, okay. Thanks! |
| 00:04:30 | × | moet quits (~moet@mobile-166-177-248-140.mycingular.net) (Ping timeout: 240 seconds) |
| 00:04:51 | → | moet joins (~moet@mobile-166-170-39-82.mycingular.net) |
| 00:13:45 | → | even4void joins (even4void@came.here.for-some.fun) |
| 00:14:53 | <cdsmith> | Here's a weirder one. I want something analogous to Functor, but fmap must be given a bijection rather than an arbitrary function. |
| 00:16:36 | <cdsmith> | Basically, a valid use of Apply at https://github.com/shapr/trynocular/blob/46b988d73425d9e390407e5d8688f6778492769f/src/Trynocular.hs#L24 really ought to have a bijection, and ought to include both directions of the correspondence. |
| 00:18:03 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 00:20:33 | <jackdk> | cdsmith: `class Invariant` from https://hackage.haskell.org/package/invariant ? |
| 00:20:58 | <cdsmith> | Oooh, you're good! |
| 00:22:01 | <cdsmith> | Though... doing this will break the Alt instance. Hmm. Yeah, use of something like <!> would require proving that the two alternatives yield non-overlapping values... |
| 00:22:10 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 00:23:07 | → | xacktm joins (xacktm@user/xacktm) |
| 00:23:15 | <cdsmith> | Okay, I need to think about how to keep some kind of ergonomics here. |
| 00:31:09 | → | AndChat-624225 joins (~trace@user/trace) |
| 00:32:14 | × | alexhandy2 quits (~trace@user/trace) (Read error: Connection reset by peer) |
| 00:33:10 | → | alexhandy joins (~trace@user/trace) |
| 00:35:03 | <zzz> | question: why can't we drop the f in fmap? we could leave it as an alias for backwards compatibility but other than that i don't see what the problem is |
| 00:35:46 | × | AndChat-624225 quits (~trace@user/trace) (Ping timeout: 268 seconds) |
| 00:36:06 | <cdsmith63> | Making the change would break existing code that relies on `map` to monomorphize an expression and thus resolve ambiguous types, I guess. |
| 00:36:21 | <zzz> | ah. |
| 00:36:27 | <zzz> | fair |
| 00:37:20 | <cdsmith63> | And there's a fair cohort of Haskellers (esp. in education) that believe that concrete types are more usable. Overloading is, in general, the enemy of comprehensible error messages. |
| 00:37:41 | <zzz> | althougj if you're relying on map to monomorphize you deserve to get broken |
| 00:38:24 | <geekosaur> | there are already major complaints about the amount of churn in the Haskell ecosystem |
| 00:38:37 | <geekosaur> | nobody wants to deal with the churn from that one |
| 00:38:58 | <zzz> | bah |
| 00:39:07 | <zzz> | avoid success at all costs |
| 00:39:39 | → | bilegeek joins (~bilegeek@2600:1008:b00c:f975:8f30:87a2:4ca8:5acd) |
| 00:40:00 | <darkling> | I've also read a comment that newcomers trying to use "map" would rather read an error message about maps than something obscure and technical about functors. |
| 00:40:31 | <darkling> | (I'm a newcomer -- no direct experience of that particular dichotomy myself) |
| 00:40:47 | <geekosaur> | you'll probably hit it with Foldable at some point |
| 00:40:49 | <cdsmith> | zzz: This is actually a great example of what "avoid success at all costs" meant in the past... and the fact that Haskell no longer follows that principle. |
| 00:41:45 | <geekosaur> | and Foldable's more perverse effects |
| 00:41:50 | <geekosaur> | > length (1,2,3) |
| 00:41:53 | <lambdabot> | error: |
| 00:41:53 | <lambdabot> | • No instance for (Foldable ((,,) Integer Integer)) |
| 00:41:53 | <lambdabot> | arising from a use of ‘length’ |
| 00:41:57 | <cdsmith> | "avoid success" suggests that, indeed, we should change things to match what our best current understanding of the ideal choice. But Haskell is already in a state where that's too painful to do. |
| 00:42:01 | <geekosaur> | > length (1,2) |
| 00:42:03 | <lambdabot> | 1 |
| 00:43:23 | → | jargon joins (~jargon@184.101.186.108) |
| 00:44:12 | <zzz> | who are these newcommers anyway? when i first started i remember not understanding a single word the compiler threw at me and somehow i think that having map specialized didn't make thinks easier |
| 00:44:23 | <cdsmith> | Yeah, the Foldable ((,) a) instance is a perfect example of overloading being dangerous. It exists because it occasionally makes sense to think of ((,) a) as meaning "(oh, and also an a on the side but it doesn't really count)". But in the majority of cases, it doesn't actually mean that. The Foldable instance is the right one for the "also on the side" meaning, but shouldn't exist in the majority case. |
| 00:45:08 | <Bulby[m]> | geekosaur: why |
| 00:45:09 | <geekosaur> | zzz, there's that and then there's deliberately making it even more comprehensible |
| 00:45:29 | <geekosaur> | Bulby[m], because someone thought a Foldable instance for (,) made sense |
| 00:45:34 | <Bulby[m]> | cdsmith: bifoldable is more useful to me for tuples |
| 00:45:39 | <geekosaur> | I'm not convinced it ever does |
| 00:45:41 | <Bulby[m]> | oh this is irc |
| 00:45:42 | <Bulby[m]> | sorry |
| 00:46:01 | <Bulby[m]> | sorry for the matrix to irc jank |
| 00:46:20 | <cdsmith> | Bulby: Why? Because (1,2) sometimes (rarely) means "2 (and also a 1 on the side)" The 2 is the value. The "(1,)" is just context. So if you ask how many values there are, the answer is that there is 1. |
| 00:46:30 | <geekosaur> | it's just a type error trap the compiler *ought* to catch but now won't |
| 00:46:54 | <Bulby[m]> | well I guess a tuple is the product pair type |
| 00:47:09 | <Bulby[m]> | (pretend that makes sense) |
| 00:47:20 | <zzz> | i never agreed with the Functor instance of tuples but whatever |
| 00:47:38 | <darkling> | I pretend that most things on this channel make sense. I don't think it helps much. :) |
| 00:48:00 | <EvanR> | I like the Functor for tuples |
| 00:48:05 | <darkling> | I pretend good. ;) |
| 00:48:08 | <Bulby[m]> | the "these" lib describes what i want to say |
| 00:48:12 | <EvanR> | when it doesn't suck |
| 00:48:53 | <Bulby[m]> | an "inner join" type |
| 00:49:59 | <zzz> | EvanR: when do you find it useful? |
| 00:50:47 | <jackdk> | it enables the Traversable instance, which I often find useful |
| 00:51:28 | <cdsmith> | The Functor instance for ((,) a) is alright, because type changes propagate through fmap. The problem with the Foldable instance is primarily that members like `length` swallow type changes, breaking the general property that you can change a type and code that relied on that type fails to build. |
| 00:51:46 | <EvanR> | when I can't be arsed to make a wrapper type that tacks on a monomorphic decorator |
| 00:52:21 | <cdsmith> | i.e., if I used to have `f :: a -> [b]`, and I change it to `f :: a -> ([b], c)`, then old code that looked like `length (f x)` still builds, but returns the wrong result. |
| 00:52:48 | <Bulby[m]> | isn't Prelude length list specific |
| 00:52:59 | <EvanR> | :t length |
| 00:53:01 | <lambdabot> | Foldable t => t a -> Int |
| 00:53:02 | <geekosaur> | :t Prelude.length |
| 00:53:03 | <EvanR> | NO |
| 00:53:04 | <lambdabot> | Foldable t => t a -> Int |
| 00:53:11 | <Bulby[m]> | 😱 |
| 00:53:26 | <EvanR> | the folding bridges proposal |
| 00:54:29 | × | moet quits (~moet@mobile-166-170-39-82.mycingular.net) (Quit: leaving) |
| 00:54:32 | × | stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
| 00:55:01 | <Bulby[m]> | part of the burning bridges proposal |
| 00:56:22 | <ski> | it would be nice if one could reexport an identifier, with a restricted type |
| 00:56:34 | <Bulby[m]> | seems niche |
| 00:56:35 | <darkling> | Did that come from Königsberg? |
| 00:57:46 | <cdsmith> | Fun story: some of the original seven bridges of Königsberg were, in fact, burned during WWII. |
| 00:57:58 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 268 seconds) |
| 00:57:58 | × | even4void quits (even4void@came.here.for-some.fun) (Ping timeout: 268 seconds) |
| 00:58:00 | <Bulby[m]> | 😭 |
| 00:58:03 | <Bulby[m]> | no more puzzles |
| 00:58:35 | × | xacktm quits (xacktm@user/xacktm) (Ping timeout: 268 seconds) |
| 00:58:44 | <darkling> | cdsmith: And they've built an eighth since, defeating the original solution... :) |
| 00:59:08 | <darkling> | Not to mention renaming the town. |
| 00:59:21 | <Bulby[m]> | original proof not solution right |
| 00:59:34 | <darkling> | Yeah. |
| 01:01:04 | <darkling> | I used to be a mathematician. I'm _allowed_ to be vague. ;) |
| 01:01:12 | <darkling> | (I'm better now) |
| 01:02:08 | <Bulby[m]> | i'm glad you're better |
| 01:04:30 | <hpc> | better at being vague? |
| 01:04:48 | <darkling> | It takes practice. |
| 01:07:37 | <darkling> | (As someone once said in another IRC channel: "everything darkling says is a joke; we just haven't got most of them yet." Do tell me to stop if it's annoying) |
| 01:14:00 | → | even4void joins (even4void@came.here.for-some.fun) |
| 01:18:48 | → | xacktm joins (xacktm@user/xacktm) |
| 01:22:08 | → | lainon joins (~lainon@2601:7c0:c500:4d20:c809:c5a6:6263:efd5) |
| 01:25:28 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 01:29:30 | → | quarkyalice_ joins (~quarkyali@user/quarkyalice/x-8092822) |
| 01:29:51 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 01:29:59 | → | quarkyalice joins (~alice@user/quarkyalice) |
| 01:32:12 | × | quarkyalice_ quits (~quarkyali@user/quarkyalice/x-8092822) (Client Quit) |
| 01:32:22 | × | quarkyalice quits (~alice@user/quarkyalice) (Client Quit) |
| 01:32:40 | → | quarkyalice joins (~alice@172.79.70.10) |
| 01:32:40 | × | quarkyalice quits (~alice@172.79.70.10) (Changing host) |
| 01:32:40 | → | quarkyalice joins (~alice@user/quarkyalice) |
| 01:35:55 | → | z0k joins (~z0k@206.84.143.59) |
| 01:42:51 | × | lainon quits (~lainon@2601:7c0:c500:4d20:c809:c5a6:6263:efd5) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 01:44:16 | <monochrom> | I thought it was "I used to be a mathematician. Now I'm a comedian." |
| 01:47:30 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 01:47:51 | <monochrom> | At the crossroad where one road goes to heaven, and the other road goes to hell, there are three guardians. One of them tells you truths only. Another tells you lies only. And the third one tells you jokes only... |
| 01:49:35 | × | quarkyalice quits (~alice@user/quarkyalice) (Remote host closed the connection) |
| 01:49:45 | → | Lumia joins (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) |
| 01:59:10 | → | frost joins (~frost@user/frost) |
| 02:00:07 | → | finsternis joins (~X@23.226.237.192) |
| 02:07:59 | → | nunggu joins (~q@user/nunggu) |
| 02:10:49 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 244 seconds) |
| 02:17:55 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:17:55 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:17:55 | finn_elija | is now known as FinnElija |
| 02:21:44 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 02:22:04 | <zzz> | when i was a kid i told my parents i wanted to be a comedian when i grew up, they laughed im my face. well, noone's lauvhing now! |
| 02:22:46 | <zzz> | *g |
| 02:23:05 | × | nunggu quits (~q@user/nunggu) (Ping timeout: 268 seconds) |
| 02:26:04 | → | nunggu joins (~q@user/nunggu) |
| 02:27:20 | <monochrom> | haha |
| 02:27:25 | → | nate4 joins (~nate@98.45.169.16) |
| 02:30:52 | × | nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Quit: quit) |
| 02:31:00 | → | nshepperd joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) |
| 02:34:41 | × | mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 246 seconds) |
| 02:38:18 | → | yauhsien joins (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) |
| 02:42:01 | → | lainon joins (~lainon@2601:7c0:c500:4d20:c809:c5a6:6263:efd5) |
| 02:43:08 | × | yauhsien quits (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) (Ping timeout: 255 seconds) |
| 02:46:36 | × | td_ quits (~td@94.134.91.109) (Ping timeout: 272 seconds) |
| 02:48:10 | → | td_ joins (~td@muedsl-82-207-238-209.citykom.de) |
| 02:51:41 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 02:54:02 | × | nunggu quits (~q@user/nunggu) (Remote host closed the connection) |
| 02:54:49 | → | nunggu joins (~q@user/nunggu) |
| 02:56:43 | × | lainon quits (~lainon@2601:7c0:c500:4d20:c809:c5a6:6263:efd5) (Quit: Textual IRC Client: www.textualapp.com) |
| 03:00:00 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 03:00:01 | × | haasn quits (~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
| 03:00:12 | → | Vajb joins (~Vajb@2001:999:40:4c50:1b24:879c:6df3:1d06) |
| 03:00:56 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 246 seconds) |
| 03:01:24 | → | haasn joins (~nand@haasn.dev) |
| 03:01:24 | × | Vajb quits (~Vajb@2001:999:40:4c50:1b24:879c:6df3:1d06) (Read error: Connection reset by peer) |
| 03:05:08 | × | russruss quits (~russruss@my.russellmcc.com) (Ping timeout: 255 seconds) |
| 03:06:55 | → | russruss joins (~russruss@my.russellmcc.com) |
| 03:10:58 | → | dsrt^ joins (~dsrt@50.237.44.186) |
| 03:15:30 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:18:17 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving) |
| 03:20:54 | → | img joins (~img@user/img) |
| 03:23:55 | → | causal joins (~user@50.35.83.177) |
| 03:24:22 | → | mathr joins (~claude@cpc98210-croy26-2-0-cust137.19-2.cable.virginm.net) |
| 03:24:27 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
| 03:26:05 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 03:26:35 | × | machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 268 seconds) |
| 03:28:05 | <mathr> | hi, I have a simple program that exhausts my RAM and I can't figure out why: |
| 03:28:06 | <mathr> | import Control.Monad (replicateM) |
| 03:28:06 | <mathr> | shapes bias p = [ s | m <- [0 .. p], s <- replicateM (fromInteger m + 2) [1 .. p], p == sum (zipWith (*) (map (bias +) s) (tail s)) ] |
| 03:28:09 | <mathr> | main = mapM_ (print . length . shapes 0) [1..10] |
| 03:30:50 | <mathr> | I know the run-time asymptotics will be terrible (O((p+2)^p) or something) but I thought laziness would mean each s in shapes could be collected and it'd run in O((p+2)*p) space |
| 03:42:05 | → | P1RATEZ joins (piratez@user/p1ratez) |
| 03:48:52 | → | nate4 joins (~nate@98.45.169.16) |
| 03:54:20 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 04:02:56 | → | shiraeeshi joins (~shiraeesh@46.34.206.55) |
| 04:04:25 | → | quarkyalice joins (~quarkyali@user/quarkyalice) |
| 04:05:27 | × | quarkyalice quits (~quarkyali@user/quarkyalice) (Client Quit) |
| 04:13:33 | × | nunggu quits (~q@user/nunggu) (Remote host closed the connection) |
| 04:14:10 | <dsal> | That looks super expensive to me because it's going to make a bunch of thunks. |
| 04:14:30 | <dsal> | Depending on your compiler version at least. Historically, `sum` is ridiculously expensive when used like that. |
| 04:18:13 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 04:18:50 | → | nunggu joins (~q@user/nunggu) |
| 04:22:24 | <mathr> | dsal: I figured out a version that doesn't space leak all the (:) from replicateM https://paste.tomsmeding.com/Oih8TQAv |
| 04:24:32 | <mathr> | now runs in constant space (less than 50kB) instead of exploding and getting OOM-killed on a desktop with 32GB RAM |
| 04:26:21 | × | Lumia quits (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) (Quit: ,-) |
| 04:26:25 | → | nate4 joins (~nate@98.45.169.16) |
| 04:27:03 | <mathr> | maybe the effects run in the wrong order compared to Control.Monad.replicateM, i only tested it with m == [] |
| 04:31:35 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 04:41:34 | <dsal> | !undo do { f <- fs; pure (f []) } |
| 04:41:39 | <dsal> | @undo do { f <- fs; pure (f []) } |
| 04:41:39 | <lambdabot> | fs >>= \ f -> pure (f []) |
| 04:43:39 | → | Infinite joins (~Infinite@49.39.119.176) |
| 04:44:03 | <dsal> | I don't quite get what replicateM is doing for you there. |
| 04:45:22 | <mathr> | > replicateM 3 "abc" -- Cartesian product |
| 04:45:24 | <lambdabot> | ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","bb... |
| 04:45:33 | <dsal> | Oh, yes, of course. |
| 04:46:41 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 04:46:45 | <mathr> | Control.Monad.replicateM retains the whole output list -> OOM killed when large, while the version I pasted using difference lists runs in small constant space |
| 04:46:56 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 04:47:46 | → | nate4 joins (~nate@98.45.169.16) |
| 04:48:23 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds) |
| 04:50:24 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 04:52:14 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 04:52:16 | <[Leary]> | You probably don't need to keep the difflist accumulator in m. |
| 04:58:28 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 05:28:59 | × | shiraeeshi quits (~shiraeesh@46.34.206.55) (Ping timeout: 246 seconds) |
| 05:33:38 | → | coot joins (~coot@213.134.190.95) |
| 05:36:06 | × | leeb quits (~leeb@KD106154144157.au-net.ne.jp) (Ping timeout: 264 seconds) |
| 05:37:56 | → | leeb joins (~leeb@KD106155002017.au-net.ne.jp) |
| 05:42:45 | → | perdent joins (~perdent@101.175.156.43) |
| 05:43:44 | × | Infinite quits (~Infinite@49.39.119.176) (Quit: Ping timeout (120 seconds)) |
| 05:44:34 | → | Midjak joins (~Midjak@82.66.147.146) |
| 05:46:33 | → | rekahsoft joins (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) |
| 05:53:50 | × | dsrt^ quits (~dsrt@50.237.44.186) (Ping timeout: 246 seconds) |
| 05:57:08 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:e600:e74a:b005:c722:73f7) |
| 06:00:52 | → | dsrt^ joins (~dsrt@50.237.44.186) |
| 06:03:06 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 06:04:00 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 06:09:13 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) (Remote host closed the connection) |
| 06:11:14 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:e600:e74a:b005:c722:73f7) (Ping timeout: 268 seconds) |
| 06:12:25 | × | PiDelport quits (uid25146@id-25146.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 06:13:16 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 06:13:17 | × | echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 2.8) |
| 06:14:01 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 06:14:38 | → | echoreply joins (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) |
| 06:16:46 | × | tabemann quits (~tabemann@2600:1700:7990:24e0:defe:9c15:44ea:93a5) (Remote host closed the connection) |
| 06:17:04 | → | tabemann joins (~tabemann@2600:1700:7990:24e0:5b3:4d0f:e683:f449) |
| 06:22:08 | × | perdent quits (~perdent@101.175.156.43) (Quit: Client closed) |
| 06:24:24 | → | shiraeeshi joins (~shiraeesh@46.34.206.55) |
| 06:27:47 | × | rekahsoft quits (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Ping timeout: 246 seconds) |
| 06:28:07 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:35:10 | → | perdent joins (~perdent@101.175.156.43) |
| 06:36:50 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 06:48:43 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 06:50:22 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 06:53:50 | → | mattil joins (~mattil@helsinki.portalify.com) |
| 06:55:50 | → | yauhsien joins (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) |
| 06:58:02 | × | vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 272 seconds) |
| 06:59:32 | → | mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi) |
| 07:00:32 | × | yauhsien quits (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) (Ping timeout: 255 seconds) |
| 07:09:46 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) |
| 07:10:00 | → | vglfr joins (~vglfr@coupling.penchant.volia.net) |
| 07:14:45 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) (Ping timeout: 268 seconds) |
| 07:18:39 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:20:18 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:20:27 | × | nunggu quits (~q@user/nunggu) (Quit: nunggu) |
| 07:23:02 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
| 07:24:08 | × | mattil quits (~mattil@helsinki.portalify.com) (Ping timeout: 246 seconds) |
| 07:33:33 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:33:59 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:44:01 | × | phma quits (~phma@host-67-44-209-11.hnremote.net) (Read error: Connection reset by peer) |
| 07:44:59 | → | phma joins (phma@2001:5b0:211c:4d08:1069:cd39:8f5a:796f) |
| 07:46:15 | × | z0k quits (~z0k@206.84.143.59) (Ping timeout: 256 seconds) |
| 07:50:44 | × | mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 246 seconds) |
| 07:52:43 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 07:53:07 | → | zeenk joins (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3) |
| 07:55:32 | → | mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi) |
| 08:01:02 | → | fweht joins (uid404746@id-404746.lymington.irccloud.com) |
| 08:03:35 | × | bilegeek quits (~bilegeek@2600:1008:b00c:f975:8f30:87a2:4ca8:5acd) (Quit: Leaving) |
| 08:04:46 | × | P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection) |
| 08:10:08 | → | quarkyalice joins (~quarkyali@user/quarkyalice) |
| 08:12:13 | × | quarkyalice quits (~quarkyali@user/quarkyalice) (Client Quit) |
| 08:12:47 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 08:16:22 | → | BusConscious joins (~martin@ip5f5bdf01.dynamic.kabel-deutschland.de) |
| 08:16:25 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:17:52 | → | Tuplanolla joins (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) |
| 08:20:02 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:e600:59fa:73d0:5de3:cb11) |
| 08:20:28 | × | cosimone quits (~user@93-44-186-171.ip98.fastwebnet.it) (Read error: Connection reset by peer) |
| 08:24:30 | → | acidjnk joins (~acidjnk@dynamic-046-114-173-051.46.114.pool.telefonica.de) |
| 08:29:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:30:17 | × | ulvarref` quits (~user@188.124.56.153) (Ping timeout: 248 seconds) |
| 08:46:18 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 08:48:09 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 08:49:28 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:54:03 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 08:57:32 | × | dsrt^ quits (~dsrt@50.237.44.186) (Ping timeout: 255 seconds) |
| 09:00:06 | × | daveakre[m] quits (~daveakrem@2001:470:69fc:105::1:88b7) (Quit: You have been kicked for being idle) |
| 09:11:55 | × | shiraeeshi quits (~shiraeesh@46.34.206.55) (Ping timeout: 268 seconds) |
| 09:12:26 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:13:09 | × | acidjnk quits (~acidjnk@dynamic-046-114-173-051.46.114.pool.telefonica.de) (Ping timeout: 268 seconds) |
| 09:14:35 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 09:17:24 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 09:17:25 | → | cosimone joins (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) |
| 09:18:04 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:19:06 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 09:21:27 | × | m1dnight quits (~christoph@78-22-9-5.access.telenet.be) (Ping timeout: 256 seconds) |
| 09:23:21 | → | m1dnight joins (~christoph@78-22-9-5.access.telenet.be) |
| 09:28:04 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 09:28:40 | → | acidjnk joins (~acidjnk@dynamic-046-114-173-051.46.114.pool.telefonica.de) |
| 09:29:02 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 09:31:02 | × | alexhandy quits (~trace@user/trace) (Read error: Connection reset by peer) |
| 09:31:08 | → | AndChat-624225 joins (~trace@user/trace) |
| 09:31:39 | → | __monty__ joins (~toonn@user/toonn) |
| 09:39:00 | × | zeenk quits (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3) (Quit: Konversation terminated!) |
| 09:42:21 | → | misterfish joins (~misterfis@87.215.131.98) |
| 09:48:10 | → | coot joins (~coot@213.134.190.95) |
| 09:48:24 | × | acidjnk quits (~acidjnk@dynamic-046-114-173-051.46.114.pool.telefonica.de) (Ping timeout: 272 seconds) |
| 09:51:50 | × | gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
| 10:11:28 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:14:30 | → | yauhsien joins (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) |
| 10:18:47 | × | yauhsien quits (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 10:23:21 | → | moonsheep joins (~user@user/moonsheep) |
| 10:30:25 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 10:30:33 | × | moonsheep quits (~user@user/moonsheep) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)) |
| 10:30:49 | → | nate4 joins (~nate@98.45.169.16) |
| 10:30:57 | × | AndChat-624225 quits (~trace@user/trace) (Read error: Connection reset by peer) |
| 10:31:08 | → | alexhandy joins (~trace@user/trace) |
| 10:33:13 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 10:34:54 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 264 seconds) |
| 10:40:20 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 10:46:26 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
| 10:47:39 | → | yauhsien joins (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) |
| 10:53:03 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Read error: Connection reset by peer) |
| 10:53:48 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 10:54:10 | → | shiraeeshi joins (~shiraeesh@46.34.206.55) |
| 10:56:56 | → | alp joins (~alp@user/alp) |
| 10:57:48 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 11:06:00 | × | kjak quits (~kjak@pool-108-31-68-111.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 11:12:05 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 11:15:14 | × | kitzman quits (~kitzman@user/dekenevs) (Quit: C-x C-c) |
| 11:19:16 | → | kitzman joins (~kitzman@user/dekenevs) |
| 11:20:15 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 11:25:38 | × | eod|fserucas_ quits (~eod|fseru@193.65.114.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
| 11:25:38 | × | eod|fserucas quits (~eod|fseru@193.65.114.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
| 11:26:22 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds) |
| 11:28:16 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 11:38:41 | → | Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com) |
| 11:41:53 | <Henson> | does anybody here have much experience with Conduit? I'm trying to figure out how best to make a conduit that converts items into lists of items, like "ConduitT a [a] m r", and back again? The reason for this is I'm trying to deal with await's returning of "Maybe a" in an easy way. |
| 11:43:20 | <Henson> | I tried something like "runMaybeT $ forever $ do item <- MaybeT await; output <- doSomething input; lift $ yield output" but that seems to have a memory leak. The better paradigm seems to be to use Conduit's "awaitForever" function, but that takes in only single items, and I need to accumulate a list of items to work with. |
| 11:44:06 | <Henson> | according to Conduit's documentation they are encouraging people to use the Conduit.Combinators instead of the Conduit.List module, and I can't seem to figure out how to make chunksOfExactlyCE work in my situation. |
| 11:44:50 | <Henson> | I can't figure out how to make chunksOfExactlyCE work at all. |
| 11:49:49 | → | z0k joins (~z0k@206.84.143.59) |
| 11:50:50 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds) |
| 11:53:07 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 11:58:47 | × | yauhsien quits (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 11:59:19 | → | yauhsien joins (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) |
| 12:02:15 | × | phma quits (phma@2001:5b0:211c:4d08:1069:cd39:8f5a:796f) (Read error: Connection reset by peer) |
| 12:02:50 | <shiraeeshi> | Henson: mapMC? |
| 12:02:53 | → | phma joins (~phma@host-67-44-208-150.hnremote.net) |
| 12:03:10 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 12:03:27 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 12:05:13 | → | coot joins (~coot@213.134.190.95) |
| 12:06:23 | → | liz__ joins (~liz@host86-159-158-175.range86-159.btcentralplus.com) |
| 12:06:30 | <Henson> | shiraeeshi: that's close, but only works on a single input item. I want to essentially call "await" many times to accumulate the input items into a list, then work with the list. chunksOfExactlyCE, upon reading the source, seems to do what I want, but I can't figure out how to get it to work. |
| 12:06:53 | <Henson> | shiraeeshi: with the runMaybeT trick it's very easy to get this to work, but that approach has a memory leak for some reason, so I'm trying to find an alternative. |
| 12:10:13 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
| 12:10:43 | <shiraeeshi> | Henson: are you trying to consume chunks of n items wrapped in Just while ignoring Nothing values? |
| 12:12:52 | <Henson> | shiraeeshi: not necessarily wrapped in Just. If I call "await" many times, I need to deal with the possibility of the conduit ending, and one of them returning a Nothing. That was very easy to handle with runMaybeT. But I'm trying to find an alternative. awaitForever works very well for single items, but I need to work with a list of items. I also can't use mapC on the list of items... |
| 12:13:59 | <Henson> | because I need to be able to detect when the conduit closes, and do something different when the list is done. Both "runMaybeT $ forever $ blah" and "awaitForever" return when the conduit is closed (when one of the awaits returns Nothing) and allows me to react to the conduit closure. |
| 12:14:42 | <Henson> | my code used to be written with the Pipe library, but pipes have no way of telling when the data pipeline has terminated, and individual components of the pipeline cannot detect and react to the closure. |
| 12:15:10 | <Henson> | conduit can, and I'm trying to find a graceful way to work with every await return a "Maybe a" |
| 12:17:40 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 12:20:09 | <maerwald[m]> | Henson: in streamly you have a finalizer for a stream when it throws an exception or terminates normally. It's basically a GC hook. |
| 12:23:13 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 12:23:23 | × | liz__ quits (~liz@host86-159-158-175.range86-159.btcentralplus.com) (Ping timeout: 246 seconds) |
| 12:25:42 | <Henson> | maerwald: wow, streamly looks pretty cool, I'll keep it in mind for the future. It looks like it's very good at doing parallel and concurrent data processing with streams of data. However I would like to avoid rewriting my code again, so want to try to figure out how to do this is Conduit. |
| 12:26:27 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 12:27:40 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 12:30:20 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:30:30 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 268 seconds) |
| 12:30:59 | → | zeenk joins (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3) |
| 12:31:30 | <maerwald[m]> | But I'm not sure I understand your use case... do you want the function running on the lsst element to somehow now it's the last element? |
| 12:31:50 | <maerwald[m]> | Then you'd need a way to look ahead |
| 12:31:50 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 12:33:11 | <shiraeeshi> | yeah, why not just sequence running a conduit with an action than you want to run after the conduit? |
| 12:33:30 | <maerwald[m]> | Henson: depending on your code it might not be hard to rewrite |
| 12:34:47 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:35:03 | <Henson> | maerwald: I have a function that takes in a TChan. This TChan allows me to pipe data from one thread to another. It's also able to signal to the other thread that the TChan has closed and no more data will be coming (to allow the other thread to terminate). I want to make a Conduit sink that awaits its input items and then puts them into the TChan for the other thread to process, but this... |
| 12:35:15 | <shiraeeshi> | I mean, doing something like runConduit () >> doSomething |
| 12:35:34 | <Henson> | Conduit needs to be able to tell when the stream of data has ended, so it can send the "TChan closed" value on the TChan so the other thread knows it can terminate. |
| 12:36:04 | <Henson> | shiraeeshi: sequencing the running of the conduit with the other action won't work, because the other action is part of one of the members of the conduit pipeline. |
| 12:36:31 | <Henson> | shiraeeshi: the other action has to be performed as part of running the conduit, not after the conduit has terminated. |
| 12:36:57 | <shiraeeshi> | Henson: have you heard about stm-conduit? |
| 12:37:08 | <Henson> | shiraeeshi: I have now! |
| 12:37:13 | Henson | looks |
| 12:39:05 | <maerwald[m]> | Henson: that sounds to me like the GC finalizer could close the TChan |
| 12:39:08 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds) |
| 12:39:39 | <Henson> | maerwald: how could I get the GC finalizer to do that? |
| 12:39:55 | <maerwald[m]> | Henson: I mean in the case of streamly |
| 12:40:03 | <Henson> | maerwald: ah |
| 12:40:15 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 12:41:26 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 12:41:59 | <maerwald[m]> | https://hackage.haskell.org/package/streamly-0.8.2/docs/Streamly-Prelude.html#v:finally |
| 12:42:32 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 12:42:51 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 12:42:54 | <maerwald[m]> | And this behaves well under combining streams etc |
| 12:49:02 | <shiraeeshi> | sounds like Data.Conduit.TMChan from stm-conduit covers Henson's use case |
| 12:49:03 | <shiraeeshi> | https://hackage.haskell.org/package/stm-conduit-4.0.1/docs/Data-Conduit-TMChan.html |
| 12:49:16 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:49:32 | <shiraeeshi> | it even says: |
| 12:49:33 | <shiraeeshi> | We register closing function explicitly, because starting with version 1.3.0 conduits library no longer maintain resources, so this is the only way to safely close channel in case of exceptions. |
| 12:51:07 | → | Vajb joins (~Vajb@85-76-45-197-nat.elisa-mobile.fi) |
| 12:51:33 | <Henson> | shiraeeshi, maerwald: thank you for your help |
| 12:53:55 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 268 seconds) |
| 12:54:50 | <shiraeeshi> | Henson: that's one way of doing what you want, it seems. You do forkIO . runResourceT (registerTerminationHandler >> runConduit) |
| 12:55:23 | <shiraeeshi> | and registerTerminationHandler invokes register from resourcet |
| 12:58:39 | → | dsrt^ joins (~dsrt@50.237.44.186) |
| 13:01:30 | → | nate4 joins (~nate@98.45.169.16) |
| 13:08:07 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
| 13:10:08 | → | obabo joins (~obabo@20014C4C1C41D6000000000000001000.catv.pool.telekom.hu) |
| 13:12:25 | × | leeb quits (~leeb@KD106155002017.au-net.ne.jp) (Ping timeout: 268 seconds) |
| 13:17:21 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 13:19:12 | × | mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 268 seconds) |
| 13:20:01 | → | pleo joins (~pleo@user/pleo) |
| 13:21:44 | × | frost quits (~frost@user/frost) (Ping timeout: 252 seconds) |
| 13:22:33 | × | dsrt^ quits (~dsrt@50.237.44.186) (Ping timeout: 248 seconds) |
| 13:29:39 | × | zeenk quits (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3) (Quit: Konversation terminated!) |
| 13:32:09 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:32:21 | × | yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection) |
| 13:32:57 | → | Lumia joins (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) |
| 13:32:59 | → | yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) |
| 13:34:25 | → | dsrt^ joins (~dsrt@50.237.44.186) |
| 13:35:29 | × | dsrt^ quits (~dsrt@50.237.44.186) (Remote host closed the connection) |
| 13:35:47 | × | jargon quits (~jargon@184.101.186.108) (Remote host closed the connection) |
| 13:35:59 | × | xacktm quits (xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com) |
| 13:36:00 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com) |
| 13:37:29 | × | yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Ping timeout: 248 seconds) |
| 13:38:24 | × | even4void quits (even4void@came.here.for-some.fun) (Quit: fBNC - https://bnc4free.com) |
| 13:40:23 | → | leeb joins (~leeb@KD106155002017.au-net.ne.jp) |
| 13:42:34 | × | z0k quits (~z0k@206.84.143.59) (Quit: WeeChat 3.5) |
| 13:43:22 | × | alp quits (~alp@user/alp) (Ping timeout: 272 seconds) |
| 13:45:28 | → | Everything joins (~Everythin@37.115.210.35) |
| 13:50:31 | → | cyanide4dinner joins (~cyanide4d@182.70.136.113) |
| 13:54:50 | → | xacktm joins (xacktm@user/xacktm) |
| 13:59:53 | × | xacktm quits (xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com) |
| 14:00:07 | × | Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Quit: ZNC - http://znc.in) |
| 14:02:13 | → | Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) |
| 14:06:41 | → | Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
| 14:10:02 | × | cyanide4dinner quits (~cyanide4d@182.70.136.113) (Remote host closed the connection) |
| 14:13:10 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 14:14:20 | × | Lumia quits (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) (Ping timeout: 255 seconds) |
| 14:17:36 | → | zaquest joins (~notzaques@5.130.79.72) |
| 14:20:13 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:24:12 | <cdsmith> | I'm looking for a word here. Given a value (say, `(4, Left 5)`), what do you call the semilattice of partial approximations to the value? (In this case, that semilattice would look like https://paste.tomsmeding.com/zNWlF1UC) |
| 14:27:06 | <cdsmith> | Oops, I guess it is in fact a lattice, not just a semilattice |
| 14:28:51 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 14:37:14 | → | Lumia joins (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) |
| 14:39:05 | × | shiraeeshi quits (~shiraeesh@46.34.206.55) (Ping timeout: 255 seconds) |
| 14:48:07 | × | Lumia quits (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) (Quit: ,-) |
| 14:48:37 | × | pleo quits (~pleo@user/pleo) (Ping timeout: 268 seconds) |
| 14:50:18 | → | pleo joins (~pleo@user/pleo) |
| 14:58:12 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 14:59:58 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 15:02:51 | → | machinedgod joins (~machinedg@66.244.246.252) |
| 15:13:23 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 15:15:05 | × | cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds) |
| 15:18:07 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 15:23:22 | × | cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection) |
| 15:25:58 | → | nate4 joins (~nate@98.45.169.16) |
| 15:28:54 | → | coot joins (~coot@213.134.190.95) |
| 15:30:49 | → | cosimone joins (~user@93-44-186-171.ip98.fastwebnet.it) |
| 15:33:12 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
| 15:33:21 | → | Kaiepi joins (~Kaiepi@156.34.47.253) |
| 15:33:49 | → | cheater joins (~Username@user/cheater) |
| 15:36:09 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 15:48:08 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 15:48:46 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:e600:59fa:73d0:5de3:cb11) (Ping timeout: 272 seconds) |
| 15:49:01 | → | cyanide4dinner joins (~cyanide4d@182.70.136.113) |
| 15:49:35 | → | econo joins (uid147250@user/econo) |
| 15:52:03 | <Bulby[m]> | https://sschakraborty.github.io/benchmark/fannkuchredux.html |
| 15:52:17 | <Bulby[m]> | 57x |
| 15:53:05 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 15:55:48 | <[exa]> | Bulby[m]: well given it's an initial bad implementation, that's not surprising |
| 15:55:54 | <[exa]> | the good one is 1.8x |
| 15:56:01 | <Bulby[m]> | WHAT |
| 15:56:23 | <[exa]> | what? |
| 15:56:34 | <Bulby[m]> | sorry you know I suck at reading |
| 15:56:35 | <Bulby[m]> | i can't believe how blazing fast haskell is |
| 15:57:00 | <Bulby[m]> | in comparison to C |
| 15:57:03 | <Bulby[m]> | it's fast |
| 15:58:59 | × | misterfish quits (~misterfis@87.215.131.98) (Ping timeout: 246 seconds) |
| 16:00:07 | × | schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: You have been kicked for being idle) |
| 16:00:12 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 16:00:12 | jinsun | is now known as Guest2528 |
| 16:00:12 | × | Guest2528 quits (~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services))) |
| 16:00:12 | jinsun__ | is now known as jinsun |
| 16:00:37 | → | shiraeeshi joins (~shiraeesh@46.34.206.55) |
| 16:02:47 | × | cyanide4dinner quits (~cyanide4d@182.70.136.113) (Remote host closed the connection) |
| 16:04:36 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 16:06:19 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 268 seconds) |
| 16:12:59 | × | shiraeeshi quits (~shiraeesh@46.34.206.55) (Ping timeout: 246 seconds) |
| 16:22:18 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 16:23:48 | × | yauhsien quits (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 16:25:26 | × | fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 16:26:27 | → | mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi) |
| 16:27:01 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 16:27:06 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds) |
| 16:28:34 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 16:29:09 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds) |
| 16:34:16 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 16:35:57 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:e600:15f0:abfd:c02c:258d) |
| 16:36:44 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:37:12 | → | cyanide4dinner joins (~cyanide4d@182.70.136.113) |
| 16:37:32 | → | yauhsien joins (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) |
| 16:39:01 | × | cyanide4dinner quits (~cyanide4d@182.70.136.113) (Client Quit) |
| 16:39:15 | → | cyanide4dinner joins (~cyanide4d@182.70.136.113) |
| 16:45:11 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
| 16:47:38 | × | pleo quits (~pleo@user/pleo) (Quit: quit) |
| 16:51:18 | → | notzmv joins (~zmv@user/notzmv) |
| 16:51:24 | × | perdent quits (~perdent@101.175.156.43) (Quit: Client closed) |
| 16:54:22 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 16:56:43 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 17:11:41 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
| 17:15:07 | → | coot joins (~coot@213.134.190.95) |
| 17:18:15 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) |
| 17:20:57 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds) |
| 17:22:47 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 17:24:33 | → | king_gs joins (~Thunderbi@2806:103e:29:a4ff:9938:ec1d:a54a:6688) |
| 17:24:43 | <EvanR> | Bulby[m], as long as you don't hit any potholes like space leaks, unwanted laziness, |
| 17:28:20 | → | kspalaiologos joins (~kspalaiol@user/kspalaiologos) |
| 17:31:09 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 17:31:23 | × | chronon_ quits (~chronon@user/chronon) (Quit: leaving) |
| 17:32:35 | → | nate4 joins (~nate@98.45.169.16) |
| 17:32:47 | → | rekahsoft joins (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) |
| 17:37:35 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 17:39:12 | → | notzmv joins (~zmv@user/notzmv) |
| 17:43:55 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 17:45:16 | <Bulby[m]> | it's witchcraft. that un GC-d langs are comparable to haskell |
| 17:46:22 | → | coot joins (~coot@213.134.190.95) |
| 17:50:20 | → | nate4 joins (~nate@98.45.169.16) |
| 17:59:38 | × | king_gs quits (~Thunderbi@2806:103e:29:a4ff:9938:ec1d:a54a:6688) (Quit: king_gs) |
| 17:59:47 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 18:01:06 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 18:03:04 | → | chronon joins (~chronon@user/chronon) |
| 18:05:41 | × | cyanide4dinner quits (~cyanide4d@182.70.136.113) (Ping timeout: 246 seconds) |
| 18:10:35 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:e600:15f0:abfd:c02c:258d) (Ping timeout: 255 seconds) |
| 18:11:44 | × | rekahsoft quits (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Remote host closed the connection) |
| 18:13:42 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 18:14:21 | → | cyanide4dinner joins (~cyanide4d@106.201.249.151) |
| 18:15:23 | → | rekahsoft joins (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) |
| 18:18:17 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 18:20:57 | → | shiraeeshi joins (~shiraeesh@46.34.206.55) |
| 18:29:43 | × | chronon quits (~chronon@user/chronon) (Quit: leaving) |
| 18:31:52 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 18:34:58 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
| 18:35:20 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 18:37:59 | → | pleo joins (~pleo@user/pleo) |
| 18:44:37 | → | cyanide3dinner joins (~cyanide4d@106.201.249.151) |
| 18:44:49 | → | alexhandy2 joins (~trace@user/trace) |
| 18:46:44 | × | kspalaiologos quits (~kspalaiol@user/kspalaiologos) (Quit: Leaving) |
| 18:47:46 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 18:47:56 | × | alexhandy quits (~trace@user/trace) (Ping timeout: 255 seconds) |
| 18:48:22 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 18:52:17 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 18:53:19 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 18:55:02 | → | even4void joins (even4void@came.here.for-some.fun) |
| 18:57:09 | → | opow242 joins (~igloo@83.sub-174-205-101.myvzw.com) |
| 18:57:14 | × | opow242 quits (~igloo@83.sub-174-205-101.myvzw.com) (Max SendQ exceeded) |
| 18:59:43 | → | xacktm joins (xacktm@user/xacktm) |
| 19:03:47 | × | machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 246 seconds) |
| 19:05:44 | → | nate4 joins (~nate@98.45.169.16) |
| 19:11:19 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 19:12:59 | → | coot joins (~coot@213.134.190.95) |
| 19:18:00 | → | ulvarrefr joins (~user@188.124.56.153) |
| 19:20:11 | → | eod|fserucas_ joins (~eod|fseru@193.65.114.89.rev.vodafone.pt) |
| 19:20:11 | → | eod|fserucas joins (~eod|fseru@193.65.114.89.rev.vodafone.pt) |
| 19:28:44 | × | cyanide4dinner quits (~cyanide4d@106.201.249.151) (Remote host closed the connection) |
| 19:28:44 | × | cyanide3dinner quits (~cyanide4d@106.201.249.151) (Remote host closed the connection) |
| 19:30:11 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 19:35:11 | × | pleo quits (~pleo@user/pleo) (Quit: quit) |
| 19:35:30 | → | zeenk joins (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3) |
| 19:36:34 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 19:46:35 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 19:47:38 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 19:48:14 | × | shiraeeshi quits (~shiraeesh@46.34.206.55) (Ping timeout: 246 seconds) |
| 19:54:45 | → | shiraeeshi joins (~shiraeesh@46.34.206.55) |
| 19:55:30 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 19:55:37 | × | shapr quits (~user@2600:4040:2d31:7100:8a04:a12a:c6c2:2309) (Ping timeout: 248 seconds) |
| 19:56:46 | → | michalz joins (~michalz@185.246.204.119) |
| 19:59:27 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 20:00:09 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:e600:8c30:8a72:c29d:62b2) |
| 20:02:20 | → | pavonia joins (~user@user/siracusa) |
| 20:04:17 | × | Everything quits (~Everythin@37.115.210.35) (Quit: leaving) |
| 20:04:17 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) (Remote host closed the connection) |
| 20:04:29 | → | acidjnk joins (~acidjnk@dynamic-046-114-172-226.46.114.pool.telefonica.de) |
| 20:05:36 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
| 20:07:05 | <monochrom> | Oh haha, I have an OOM in runghc that doesn't kill the runghc, but rather Chrome instead. |
| 20:07:43 | → | Kaipei joins (~Kaiepi@156.34.47.253) |
| 20:07:55 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 20:08:17 | <monochrom> | "avoid killing haskell at all costs" |
| 20:09:44 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) |
| 20:10:38 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 246 seconds) |
| 20:12:06 | <[exa]> | chrome deserved tho |
| 20:18:50 | × | Kaipei quits (~Kaiepi@156.34.47.253) (Ping timeout: 255 seconds) |
| 20:20:30 | → | coot joins (~coot@213.134.190.95) |
| 20:21:50 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 20:22:39 | × | yauhsien quits (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 20:24:50 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:28:28 | → | pleo joins (~pleo@user/pleo) |
| 20:29:42 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 20:32:18 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 20:32:32 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:40:28 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 20:40:43 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 20:43:43 | → | Kaipei joins (~Kaiepi@156.34.47.253) |
| 20:45:14 | → | gmg joins (~user@user/gehmehgeh) |
| 20:45:40 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) (Remote host closed the connection) |
| 20:51:12 | → | jgeerds joins (~jgeerds@55d45f48.access.ecotel.net) |
| 20:53:35 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 20:53:35 | jinsun | is now known as Guest9781 |
| 20:53:35 | jinsun__ | is now known as jinsun |
| 20:55:40 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) |
| 20:57:29 | × | Guest9781 quits (~jinsun@user/jinsun) (Ping timeout: 248 seconds) |
| 20:58:01 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 268 seconds) |
| 20:58:50 | → | gmg joins (~user@user/gehmehgeh) |
| 21:02:33 | × | mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: WeeChat 3.5) |
| 21:04:44 | × | rekahsoft quits (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Ping timeout: 255 seconds) |
| 21:08:05 | × | Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
| 21:08:35 | → | cyanide3dinner joins (~cyanide4d@106.201.249.151) |
| 21:08:43 | → | misterfish joins (~misterfis@ip214-130-173-82.adsl2.static.versatel.nl) |
| 21:09:39 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 21:10:06 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 21:11:31 | → | yauhsien joins (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) |
| 21:13:22 | × | Kaipei quits (~Kaiepi@156.34.47.253) (Read error: Connection reset by peer) |
| 21:14:39 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Ping timeout: 268 seconds) |
| 21:15:16 | × | acidjnk quits (~acidjnk@dynamic-046-114-172-226.46.114.pool.telefonica.de) (Ping timeout: 268 seconds) |
| 21:16:30 | × | yauhsien quits (~yauhsien@61-231-38-201.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 21:16:48 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) (Remote host closed the connection) |
| 21:21:28 | → | Lumia joins (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) |
| 21:23:46 | → | dcoutts joins (~duncan@host86-150-18-54.range86-150.btcentralplus.com) |
| 21:24:27 | → | Guest27 joins (~Guest27@2601:281:d47f:1590::2df) |
| 21:25:40 | × | jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
| 21:25:56 | → | jinsun joins (~jinsun@user/jinsun) |
| 21:26:36 | × | Guest27 quits (~Guest27@2601:281:d47f:1590::2df) (Client Quit) |
| 21:28:03 | × | jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
| 21:28:09 | → | nate4 joins (~nate@98.45.169.16) |
| 21:28:18 | → | jinsun joins (~jinsun@user/jinsun) |
| 21:31:02 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
| 21:33:23 | <AndreasK> | Anyone got good ideas for keeping types representing the same data in sync across haskell and rust code. |
| 21:33:46 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 21:33:57 | <AndreasK> | The idea being that at least while I still play around with the data format I can regenerate one definition from the other and then just fix the code where it breaks. |
| 21:35:21 | → | alp joins (~alp@user/alp) |
| 21:36:15 | <EvanR> | generate the rust code using haskell xD |
| 21:36:24 | <monochrom> | I have a cunning plan! Design a 3rd language for expressing your type. Then a program that translate that to Rust types, and a program that translates that to Haskell types. |
| 21:37:32 | <AndreasK> | Given it's a toy project I did think about generating the rust definitions for the haskell types via Data or Generics |
| 21:37:54 | <monochrom> | I think it's Generics. |
| 21:38:34 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 21:38:58 | <monochrom> | My understanding of Data is that it's good for writing the catamorphism for you. Whereas Generics gives you better access to constructor names, field names, etc those metadata. |
| 21:39:00 | <AndreasK> | afaik you can get the require info from both, not sure which is easier to work with |
| 21:40:14 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 21:45:06 | <tdammers> | clearly, the answer is Lisp |
| 21:47:55 | × | sayola quits (~vekto@dslb-088-078-152-210.088.078.pools.vodafone-ip.de) (Quit: Leaving.) |
| 21:48:21 | × | Lumia quits (~Lumia@c-73-219-104-153.hsd1.ma.comcast.net) (Quit: ,-) |
| 21:50:26 | → | mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi) |
| 21:51:46 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 21:55:36 | <monochrom> | I would weaken that to S-expressions but yeah :) |
| 21:55:46 | <monochrom> | Either S-expressions or XML haha. |
| 21:58:44 | → | nate4 joins (~nate@98.45.169.16) |
| 22:01:39 | → | Topsi joins (~Topsi@dyndsl-095-033-020-051.ewe-ip-backbone.de) |
| 22:02:15 | → | Haskelytic joins (~Haskelyti@118.179.211.17) |
| 22:02:20 | × | shiraeeshi quits (~shiraeesh@46.34.206.55) (Ping timeout: 255 seconds) |
| 22:02:42 | <AndreasK> | I rather write the types twice than in an XML spec |
| 22:03:45 | <dsal> | The good news is that if you do it in XML, you'll probably end up writing everything twice anyway because that's how we roll. |
| 22:03:45 | → | shiraeeshi joins (~shiraeesh@46.34.206.55) |
| 22:03:53 | <monochrom> | haha |
| 22:04:50 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 22:05:26 | × | michalz quits (~michalz@185.246.204.119) (Remote host closed the connection) |
| 22:06:27 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 22:09:12 | → | machinedgod joins (~machinedg@66.244.246.252) |
| 22:10:13 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 22:10:31 | → | king_gs joins (~Thunderbi@2806:103e:29:a4ff:9938:ec1d:a54a:6688) |
| 22:11:14 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:12:23 | × | king_gs quits (~Thunderbi@2806:103e:29:a4ff:9938:ec1d:a54a:6688) (Client Quit) |
| 22:15:57 | <BusConscious> | hey I need a function f :: a -> b -> (a,b) f a b = (a,b) |
| 22:16:02 | <BusConscious> | what is this called? |
| 22:16:25 | <geekosaur> | :t (,) |
| 22:16:26 | <lambdabot> | a -> b -> (a, b) |
| 22:16:40 | <BusConscious> | thanks |
| 22:16:49 | <BusConscious> | kind of makes sense |
| 22:16:56 | × | misterfish quits (~misterfis@ip214-130-173-82.adsl2.static.versatel.nl) (Ping timeout: 268 seconds) |
| 22:17:06 | <BusConscious> | so , is just an infix operator when we write tuples? |
| 22:17:11 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) |
| 22:17:21 | <ski> | sortof, but not quite |
| 22:17:33 | <geekosaur> | sort of. there are some limitations, like you have to enable an extension to use it as a section |
| 22:17:38 | <ski> | @type (,,) |
| 22:17:39 | <lambdabot> | a -> b -> c -> (a, b, c) |
| 22:17:50 | <ski> | `TupleSections' is a language extension |
| 22:17:57 | <ski> | @type (,False,) |
| 22:17:59 | <lambdabot> | t1 -> t2 -> (t1, Bool, t2) |
| 22:18:21 | → | merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
| 22:18:44 | <ski> | (and you can't write just `2,False', you have to write `(2,False)' (unlike in OCaml)) |
| 22:19:51 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) (Remote host closed the connection) |
| 22:20:07 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:cd28:27b2:2677:8e87) |
| 22:23:14 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
| 22:27:08 | × | jgeerds quits (~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 272 seconds) |
| 22:28:12 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:e600:8c30:8a72:c29d:62b2) (Quit: Leaving) |
| 22:29:55 | × | hgolden quits (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Quit: Konversation terminated!) |
| 22:29:58 | <monochrom> | It is the other way round. "(x, y)" is syntax sugar for "(,) x y". |
| 22:30:23 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 22:33:25 | <BusConscious> | monochrom: Just applied that partially, that's why I asked: https://github.com/MartinErhardt/kell/blob/7d42d731fbe4df3cf3b38f8bbdd36dc9b2aa275f/TokParser.hs#L156 |
| 22:37:04 | → | quarkyalice joins (~quarkyali@user/quarkyalice) |
| 22:38:31 | <dsal> | Some people really don't like tuple sections because of a principled reason I don't want to understand. |
| 22:39:13 | <ski> | hm ? |
| 22:39:44 | <BusConscious> | ski: dsal: So with tuple sections I could have written (e,)? |
| 22:39:55 | <ski> | (i can understand a general reason to feel a bit iffy about sections .. but i'm not sure if that's the reason those people had in mind) |
| 22:39:58 | <ski> | BusConscious, yes |
| 22:40:04 | <EvanR> | whatever is missing from the syntactic construction is where the argument goes |
| 22:40:09 | <AndreasK> | I don't like them because I find they can make code harder to read :) But I've worked on code using them before and survived ;D |
| 22:40:15 | <ski> | BusConscious : also (regardless), the surrounding brackets are redundant |
| 22:40:36 | <ski> | (and `lastSep' seems to be unused) |
| 22:40:39 | <geekosaur> | only reason I';ve ever heard is it stops people from using tuples (and possibly lists) with optional trailing comma like python |
| 22:40:57 | <geekosaur> | pfft |
| 22:41:06 | <ski> | that might be a plus, in my book .. not sure |
| 22:41:20 | <BusConscious> | I find myself making way too many brackets in haskell generally |
| 22:41:39 | <EvanR> | that trailing comma thing is probably some good lisp fodder. "silly comma users" xD |
| 22:41:48 | <dsal> | The principled reason I've heard is that it makes `(,)` behave like a function when it's not. But, I feel like it's consistent with, e.g. `(^)`. |
| 22:42:02 | <ski> | BusConscious : you should probably learn to use the `Applicative' combinators for parsers more |
| 22:42:09 | <EvanR> | but, it is a function |
| 22:42:13 | → | jgeerds joins (~jgeerds@55d45f48.access.ecotel.net) |
| 22:42:16 | × | jgeerds quits (~jgeerds@55d45f48.access.ecotel.net) (Remote host closed the connection) |
| 22:42:19 | ski | was just about to say |
| 22:42:28 | <EvanR> | rather, it has the function type |
| 22:42:38 | <EvanR> | so you can't tell if it's "not really" |
| 22:44:28 | <BusConscious> | ski yeah applicative style can be very readable |
| 22:44:36 | <dsal> | The principled people argue it's something quite different in particular ways that I don't care about. "you can just use `(,) 2` or `\x -> (x,2)`" -- which... I don't really find better. Similarly, if you look at `(2^)` vs. `(^) 2` -- it's much easier to read the latter incorrectly than the former. |
| 22:44:42 | <BusConscious> | I use it more here https://github.com/MartinErhardt/kell/blob/master/WordExp.hs |
| 22:45:04 | <ski> | parseToks = parseSepList <* (eof <|> op EOF) -- BusConscious, e.g. |
| 22:45:28 | <BusConscious> | ski: Yupp I didn't know about <* until yesterday |
| 22:45:32 | <ski> | BusConscious : also, you match on `(Word w)' in `case'-`of's, when it could be just `Word w' |
| 22:46:15 | <BusConscious> | ski you're right as I said: too many brackets |
| 22:46:20 | <ski> | BusConscious : and no need for `... >>= (\w -> ..w..)', just go `... >>= \w -> ..w..' (or `do w <- ...; ..w..') |
| 22:47:58 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 22:48:03 | <ski> | parseAssignWord = (,) <$> parseXBDName <* char '=' <*> rest |
| 22:49:03 | <Haskelytic> | fellas, i'm reading this blog post on parametricity https://www.well-typed.com/blog/2015/05/parametricity/ |
| 22:49:12 | <Haskelytic> | the author mentions the notion of "closed type" |
| 22:49:15 | <Haskelytic> | what does that mean? |
| 22:49:15 | × | cyanide3dinner quits (~cyanide4d@106.201.249.151) (Remote host closed the connection) |
| 22:50:01 | <hpc> | closed types can't have stuff added to them after the fact |
| 22:50:08 | <hpc> | Bool is a closed type |
| 22:50:25 | <hpc> | something like java's Object is an open type, because you can extend it |
| 22:50:27 | <ski> | `if nLs then newlineList else return ()' could be `when nLS newlineList' |
| 22:50:56 | <Haskelytic> | hpc: what would be an example of an open type in Haskell? |
| 22:51:34 | <BusConscious> | ski: ok that's interesting gotta bookmark "when" |
| 22:51:35 | <hpc> | Functor f => (a -> b) -> f a -> f b |
| 22:51:36 | × | Guest8247 quits (~krjst@2604:a880:800:c1::16b:8001) (Quit: bye) |
| 22:51:56 | → | krjst joins (~krjst@2604:a880:800:c1::16b:8001) |
| 22:52:18 | <hpc> | you can always write a new Functor instance, adding more stuff to that type |
| 22:52:29 | × | quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
| 22:52:37 | <ski> | Haskelytic : what hpc mentioned is a different notion of "open" than what is referred to in the blag. in that context, "open" means that it has free variables. like `x + 1' is open, you can't compute it unless/until you give a specific value to `x' |
| 22:53:05 | <hpc> | oh, heh |
| 22:53:06 | × | merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 22:53:07 | <ski> | (well, "open" vs. "closed" notion, really) |
| 22:53:20 | <ski> | BusConscious : also `unless' |
| 22:53:55 | <Haskelytic> | ski: but `x+1` is a term no? |
| 22:54:04 | ski | might say `Dynamic' or `SomeException' are open (in the first sense) |
| 22:54:17 | <ski> | Haskelytic : sure. (and ?) |
| 22:54:37 | <ski> | (an open term) |
| 22:55:01 | <Haskelytic> | I'm just a bit hung up on the terminology because I'm thinking open type and open term should be different, unless I'm misunderstanding something completely XD |
| 22:55:09 | <Haskelytic> | Hmm but I get the idea |
| 22:55:12 | <Haskelytic> | Thanks guys! |
| 22:55:34 | <ski> | Haskelytic : it's the same notion of "open" in "open type" and "open term", just applied to types vs. terms |
| 22:56:25 | <ski> | `Int -> [a] -> [a]' is an open type, since we haven't specified which type `a' is to be. otoh, `forall a. Int -> [a] -> [a]' is closed. it is the type of `take', e.g. |
| 22:56:29 | <ski> | @type take |
| 22:56:30 | <lambdabot> | Int -> [a] -> [a] |
| 22:56:34 | <EvanR> | is an extensible variant an open type |
| 22:57:18 | <ski> | however, Haskell commonly elides the `forall' part, making it implicit (iow, it implicitly inserts it for you, in some (not all) contexts) .. maybe this somewhat more difficult to get a clear hold of, initially |
| 22:57:27 | <hpc> | would it be misleading to call an open term a closure? |
| 22:57:49 | <ski> | well, the open term, together with its environment, i guess ? |
| 22:58:21 | <hpc> | (that question was 90% pun) |
| 22:58:44 | <ski> | (although, usually, "closure" is used for the implementation of the resulting value, when reducing such a term-in-environment .. more specifically when we can't GC away the environment, wrt the resulting value) |
| 22:58:48 | <monochrom> | This is an open-and-shut case. :) |
| 23:00:01 | <ski> | iirc this is where the term "closure" comes from, "closing the term (or its value), over its enclosing environment, making it self-contained" |
| 23:00:04 | <Haskelytic> | Seems like I need more time to absorb all this lingo coming at me at mach speed :) |
| 23:00:49 | <BusConscious> | ski: thanks for the feedback. The codebase in general and that file in particular is still kind of a mess as i rush towards turing completeness and more advanced control structures, but partially applying (,) and using when, unless, curry and uncurry are for sure tools to clean it up a bit |
| 23:01:22 | <monochrom> | I think you don't need the word "closure" or its meaning until you wonder what's the magic that enables "\x -> x + y" to know which "y" it should use. |
| 23:02:14 | <BusConscious> | Though it also ought to be said, that while applicative style is usually more readable, I also try to stay below 125 characters per line |
| 23:02:33 | <monochrom> | Unless you are an advanced programmer or a compiler/interpreter writer, you don't really care other than "obviously lexical scoping". |
| 23:03:05 | <monochrom> | (It is easier said than done. But how many people actually need to know how it's done?) |
| 23:03:17 | × | lottaquestions quits (~nick@2607:fa49:5041:a200:d970:339e:3d32:94d) (Quit: Konversation terminated!) |
| 23:04:09 | <monochrom> | Therefore unpopular opinion: Experts throwing around the word "closure" just encourages either cargo-culting jargons or unnecessary distractions or both. |
| 23:04:15 | <Haskelytic> | monochrom: I'm still in the "duh lexical scoping" camp |
| 23:04:55 | <Haskelytic> | I've seen so many things called closures that sometimes I wonder if I'm insane or the author is ;) |
| 23:05:01 | <monochrom> | As another example look at how many people say "isomorphic" without ever asking what it means. Most of them confess "I heard experts say it, therefore I say it." |
| 23:05:45 | <Haskelytic> | Programming is sloppy business though so i can understand why most people might not be interested in precise definitions |
| 23:05:55 | <Haskelytic> | I'm just trying to reduce my own sloppiness |
| 23:06:16 | <monochrom> | "lexical scoping" is very precise. "closure" is an implementation detail. |
| 23:06:39 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 23:06:39 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 23:06:39 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:06:53 | <EvanR> | unpopular opinion: programming doesn't have to be sloppy business |
| 23:07:14 | <ski> | monochrom : sure. (as you know) closures (and free variables in general) are "just" an optimization over the substitution-model |
| 23:07:26 | <ski> | BusConscious : usually i stay below 80 |
| 23:07:30 | <monochrom> | "bijective" is very precise. "isomorphic" adds an extra condition, sure. But Ironically, everything is being sloppy about that extra condition. At which point actually "bijective" is more precise. |
| 23:07:42 | <monochrom> | s/everything/everyone/ |
| 23:08:41 | <Haskelytic> | EvanR: try saying that to the python programmers :) |
| 23:08:44 | × | shiraeeshi quits (~shiraeesh@46.34.206.55) (Ping timeout: 268 seconds) |
| 23:08:58 | <ski> | yea, "closure" is an implementation-specific term. if you're not talking about implementation, it's probably better to say "function(al) value" or "first-class function" or "lambda abstraction" or "lexical/static scope", or something along those lines |
| 23:09:03 | <EvanR> | bring it |
| 23:09:32 | <EvanR> | come at me pythro |
| 23:11:58 | × | kmein quits (~weechat@user/kmein) (Ping timeout: 240 seconds) |
| 23:12:41 | <BusConscious> | ski: how would you tidy up something like this? https://github.com/MartinErhardt/kell/blob/7d42d731fbe4df3cf3b38f8bbdd36dc9b2aa275f/TokParser.hs#L134 |
| 23:13:48 | <BusConscious> | when you have DataConstructor with a lot of different parameters and you want to create a new data structure from the old one that is equal in all of these parameters except one or some |
| 23:14:06 | <BusConscious> | bc rn it feels super redundant to write something like this |
| 23:17:07 | × | Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed) |
| 23:18:00 | <EvanR> | you can factor out the common parts, or try your hand at extensible records |
| 23:19:23 | → | kmein joins (~weechat@user/kmein) |
| 23:22:04 | <ski> | addAssign strstr cmd = cmd {assign = [strstr] ++ assign cmd} -- record update |
| 23:24:22 | <BusConscious> | ski: aaaah that is really good to know thank you |
| 23:24:41 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection) |
| 23:25:13 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 23:25:46 | × | elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Read error: Connection reset by peer) |
| 23:25:50 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
| 23:26:40 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 23:27:21 | × | TonyStone quits (~TonyStone@2603-7080-8607-c36a-514e-68a6-af12-10c9.res6.spectrum.com) (Ping timeout: 248 seconds) |
| 23:27:36 | → | elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 23:31:23 | <monochrom> | I think the python people don't mean to be sloppy, they just want to be flexible and extensible. |
| 23:31:58 | × | BusConscious quits (~martin@ip5f5bdf01.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 23:32:12 | × | Tuplanolla quits (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:32:15 | → | Colere joins (~colere@about/linux/staff/sauvin) |
| 23:32:22 | <monochrom> | OTOH programming jokes are OK! :) |
| 23:33:03 | <monochrom> | Haskell requires having attempted PhD and failed. >:) |
| 23:33:36 | <geekosaur> | o.O |
| 23:34:02 | <EvanR> | or is haskell just a side effect of that |
| 23:34:11 | <monochrom> | I would think "refactoring" applies equally well to data type definitions. |
| 23:35:25 | <monochrom> | You have "a function" and then later you desire "a 2nd function that's like the 1st with just one small change". You go "let me refactor the 1st function". |
| 23:35:44 | <monochrom> | Why can't that also be s/function/type/ ? |
| 23:36:59 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 23:37:56 | → | yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) |
| 23:39:42 | → | TonyStone joins (~TonyStone@2603-7080-8607-c36a-09e4-c1eb-6da4-2a7c.res6.spectrum.com) |
| 23:42:30 | × | yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Ping timeout: 272 seconds) |
| 23:43:42 | × | mathr quits (~claude@cpc98210-croy26-2-0-cust137.19-2.cable.virginm.net) (Quit: ->) |
| 23:49:13 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
All times are in UTC on 2022-06-25.