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