Home liberachat/#haskell: Logs Calendar

Logs on 2021-07-14 (liberachat/#haskell)

00:00:42 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 272 seconds)
00:03:43 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
00:04:27 gentauro joins (~gentauro@user/gentauro)
00:04:40 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
00:05:15 ec joins (~ec@gateway/tor-sasl/ec)
00:08:03 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
00:08:13 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
00:09:47 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:12:45 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 255 seconds)
00:13:04 × hseg quits (~gesh@185.120.126.10) (Quit: WeeChat 3.2)
00:13:48 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
00:14:19 × silverwhitefish quits (~hidden@47.202.102.10) (Quit: One for all, all for One (2 Corinthians 5))
00:16:18 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
00:16:48 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 268 seconds)
00:26:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
00:27:25 fryguybob joins (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com)
00:27:58 silverwhitefish joins (~hidden@47.202.102.10)
00:31:04 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
00:31:42 × Guest3034 quits (~mike@user/feetwind) (Quit: WeeChat 3.1)
00:31:54 feetwind joins (~mike@user/feetwind)
00:33:16 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
00:38:47 <hololeap> every person has exactly two biological parents... is that a reasonable enough assumption?
00:39:11 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
00:40:46 <geekosaur> for genetics yes, for other aspects no
00:41:11 <geekosaur> and the biological parents may be unrelated to the familial parents
00:41:46 <hololeap> That's why I specified _biological_ parents
00:42:09 <hololeap> I'd be interested in hearing of a case where someone didn't have exactly two biological parents
00:42:15 <hololeap> cloning?
00:42:43 <hololeap> someone = an individual of the homo-sapeins species
00:43:32 <geekosaur> actually davean's earlier comment implied unexpected complexity
00:44:35 <hololeap> I understand that it wouldn't necessarily make a nice binary tree all the way up, but I'm wondering if we can at least hold it as axiomatic that each individual has exactly two biological parents
00:45:37 <davean> geekosaur: well, consider if you had an egg donated, but used the birthing mother's nucleus with some male's sperm. We're up to 3 now. And that differs mitocondrially
00:45:44 <davean> geekosaur: Thats a simple case
00:45:55 <geekosaur> was considering raising that case
00:46:03 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
00:46:06 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
00:46:16 <hololeap> I would think the egg and sperm donors would be the two in that case
00:46:42 <davean> hololeap: nope, the nucleous provide's materal DNS also
00:46:57 <davean> You've got 3 clear DNA sources
00:47:05 <davean> all providing seperate DNA
00:47:19 <hololeap> I guess you could argue that the blood from the surrugate mother would be in the fetus as well
00:47:31 <davean> No, no, I'm talking clearer than that here
00:47:48 <davean> I wasn't even talking about a surrugate - though that can matter also of course
00:47:53 <davean> also, can I remind you of chimeras?
00:48:01 <hololeap> lol
00:48:26 <davean> They happen
00:48:43 <davean> ANYWAY, parents are complicated
00:49:05 <hololeap> I'm definitely not trying to mock... but what do you mean by chimeras?
00:49:22 <davean> hololeap: chimeras are where multiple zygotes merge and form one individual
00:49:42 <hololeap> oh... ok. I thought you meant like a human-animal hybrid
00:49:50 <davean> No, its a human-human hybrid
00:49:56 <davean> So maybe you're you, but your liver is your unborn sister.
00:49:57 MQ-17J joins (~MQ-17J@8.21.10.15)
00:50:15 <davean> Or maybe your unborn half brother
00:50:16 <hololeap> No, I've never heard of that and that's really interesting
00:50:46 <davean> Look, this is REALLY complicated. And some politicans got together and decided what data would go on the forms
00:50:59 <davean> :)
00:51:03 <davean> The best way to make a standard
00:51:16 <hololeap> fair enough. I just wanted to find a model that would make sense, but it sounds like it can get really bizarre
00:51:27 <davean> REALLY bizar
00:51:52 <davean> You could have mitocondria from one person, male and female donated from 2 others, and be a chimera
00:51:54 <davean> Who the fuck knows
00:52:09 <hololeap> where can I read more about this?
00:52:26 <davean> Uh, no idea
00:52:35 <davean> https://en.wikipedia.org/wiki/Chimera_(genetics) has a section on human chimeras
00:52:43 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
00:52:47 <davean> the first example has shown up in IVF
00:53:13 <davean> uh, I only know about this because I had to descamble genetics databases for a genetics lab information management tool back in the day
00:53:35 <hololeap> that's cool. you have first-hand evidence
00:54:20 <davean> oh huh, wikipedia says, after I got out of this, there DID become human-animal chimeras
00:54:23 <davean> well thats a thing
00:54:38 <davean> So yah, your parents might even be different species I guess
00:54:44 <davean> Thats even more complicated than I knew of!
00:55:19 <davean> hololeap: oh this actually suggests a REALLY simple case I didn't even think of! Organ donation
00:55:30 <davean> I mean not what people generally mean here, but in a medical sense it matters
00:58:23 <davean> hololeap: https://www.statnews.com/2019/01/24/first-trial-of-three-person-ivf-for-infertility/ here is the origional case I listed, or a way it happens
00:58:35 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
00:58:49 <davean> I don't know how much you know about biology, I was guessing not much sine the initial example seemed to miss, but that could be how I said it
00:59:07 <davean> basicly mitochondria are seperate "sub cells" with their own genetics
00:59:28 <davean> seperate from what you generally think of as "your DNA" from your basic bio classes in HS
00:59:57 <davean> and its purely matrolineal (under normal circumstances! One COULD swap them out from the father of course if done on purpose!)
01:04:12 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
01:04:18 × Guest6176 quits (~Guest61@2001:ac8:27:20::a01e) (Quit: Client closed)
01:05:18 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
01:13:37 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
01:15:11 × zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
01:15:15 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:16:05 notzmv joins (~zmv@user/notzmv)
01:18:11 <hololeap> I'm not that familiar with that level of human biology, mostly just the basic stuff that you mentioned from HS. I know a bit more about botany and I know that can get really bizarre as well
01:18:34 <yin[m]> this is hilariously creepy https://www.youtube.com/watch?v=Kw0AEtrr7E0
01:19:05 × smichel17 quits (~smichel17@2601:193:8300:4b9::600) (Quit: smichel17)
01:23:27 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
01:23:46 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
01:25:10 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
01:27:25 <hololeap> davean: I thought of organ donation after you mentioned the possibility of my liver being from a different zygote, and it ties into that whole philosophical dilemma of when a person stops being human after N bionic body replacements
01:27:25 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
01:28:04 <davean> stops being human? I'd think the question would be when they stop being the same human
01:28:28 <geekosaur> "bionic"
01:29:10 × xff0x quits (~xff0x@2001:1a81:5314:1800:204a:df94:d24b:de67) (Ping timeout: 246 seconds)
01:29:32 <hololeap> there's a futurama episode that goes into this :)
01:29:34 <geekosaur> kinda odd to consider a human in the context of the ship of Theseus
01:30:07 <davean> geekosaur: I don't find it odd at all - or I find it odd to consider a person is the same person over any period of time thats non-negligable
01:30:28 <davean> if someone doesn't change, they're not really worth considering much of a person, are they?
01:30:53 <davean> if they don't act, or think like they did, how would you determin they're the same?
01:31:02 xff0x joins (~xff0x@2001:1a81:5355:ca00:f556:f8e3:c42f:ffef)
01:31:08 <geekosaur> I'm actually on your side of that argument, but their body parts have continuity even though they have changed
01:31:19 <geekosaur> (cells already do the ship of theseus thing)
01:31:32 <nshepperd> a human is the squishy thing in the skull. the rest is just scaffolding
01:32:46 <hololeap> I read about cases of people taking on their donors memories after getting an organ transplant... not sure if it's true or not, but interesting to consider nonetheless
01:33:34 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
01:34:50 × bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 272 seconds)
01:35:10 shriekingnoise parts (~shrieking@186.137.144.80) (ERC (IRC client for Emacs 28.0.50))
01:36:29 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
01:37:23 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
01:37:38 <hololeap> geekosaur: I'm reading about the ship of Thesus, and it seems like the quintessential thought experiment in regards to what I mentioned about bionic body replacement
01:38:06 <geekosaur> probably what the futurama ep was riffing on
01:38:29 <hololeap> yeah probably
01:38:58 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
01:39:44 <dexterfoo> is attoparsec still a good choice (efficient) if i don't need any backtracking?
01:40:38 <hololeap> dexterfoo: I think so, but megaparsec is supposed to have similar efficiency... someone else can probably go into more detail on this
01:42:25 <davean> dexterfoo: attoparsec forces copying in its buffer
01:42:45 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
01:43:42 <davean> For many cases you can get faster elsewhere. I've had to add functions to attoparsec to keep acceptable performance vs. other things, but I haven't done side-by-side benchmarks with other standard offerings lately. I'd suspect attoparsec losses though - it certainly loses in many cases against naive implimentations.
01:44:01 <davean> I'm moving everything off attoparsec slowly
01:45:01 renzhi joins (~xp@2607:fa49:655f:a700::8b9f)
01:45:30 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
01:45:43 stevenxl joins (~stevenlei@66.63.167.105)
01:46:18 × stevenxl quits (~stevenlei@66.63.167.105) (Client Quit)
01:49:03 <dexterfoo> davean: to which library?
01:50:05 stevenxl joins (uid133530@id-133530.highgate.irccloud.com)
01:50:15 <davean> I didn't imply to a specific library. I just ran the parse combinators against a 'machines' stream and removed the duplication of having a parser library for most of the stuff I was doing, because my core inefficiency was due to poor buffer management in attoparsec, but "more appropriate things" I have no reason to move to one specific thing to solve all my problems.
01:51:00 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
01:51:57 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 276 seconds)
01:55:16 <hololeap> dexterfoo: I think it would be a good idea to compare it to megaparsec at the very least. also check out megaparsec's github page because there are some benchmark results on there
01:56:31 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
01:57:06 <dexterfoo> ok, but i am parsing streaming data with conduit, which has a Data.Conduit.Attoparsec module, but there is no megaparsec integration
01:57:09 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
01:59:41 <davean> A) ok, great B) why would you need to to make that explicitely? C) if you just want it to be easy, use what you have at hand?
02:01:26 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 272 seconds)
02:02:02 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
02:02:04 <dexterfoo> i am using attoparsec and it works and is easy, but i am wondering if there is a faster way
02:03:37 <stevenxl> Hey folks. I have a newtype wrapper around a list of Ints, and I'd like a property test that if the list contains the number 1 in it, I get back the result `One`.
02:03:42 <davean> Oh theres a definately a faster way
02:03:49 <stevenxl> I wrote a quick script just to show what I mean:
02:03:58 <davean> attoparsec can't be anywhere NEAR the fastest - parse theory tells us that, its the wrong structure
02:04:01 <stevenxl> https://www.irccloud.com/pastebin/MPAt1waK/
02:04:26 <stevenxl> Of course, the problem is that the instance of `Arbitrary` that I have created will always add one to the head of the list.
02:04:47 <stevenxl> I'd like to add it at the head, the tail, or somewhere in-between randomly.
02:05:02 <davean> stevenxl: filter?
02:05:19 <stevenxl> davean: Sorry. I'm not following you.
02:05:20 <Axman6> generate a random number between 0 and length list and insert it at that location
02:05:38 <davean> stevenxl: you can make sure 1 isn't in the list easily, you can also check if 1 is in the list easily, thus you can construct both cases
02:05:49 <davean> you can also randomly sort the list
02:05:59 <stevenxl> Axman6: Thanks. That's what I think I need!
02:06:24 <Axman6> do { list <- arbitrary; idx <- choose (0,length list); pure $ ContainsOne (insert idx 1 list) } -- you might need to write insert
02:06:45 <stevenxl> Axman6: perfect.
02:06:49 <Axman6> and you'll probably need to look up the correct name for choose
02:07:05 <stevenxl> Yup - I can look that up in the quickcheck docs / generator section.
02:09:17 Guest43 joins (~Guest43@187.83.249.216.dyn.smithville.net)
02:11:34 × thonkpod quits (~thonkpod@user/thonkpod) (Ping timeout: 256 seconds)
02:17:24 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
02:17:46 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
02:18:22 × td_ quits (~td@94.134.91.7) (Ping timeout: 256 seconds)
02:19:08 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:19:08 FinnElija is now known as Guest2571
02:19:08 × Guest2571 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (sodium.libera.chat (Nickname regained by services)))
02:19:08 finn_elija is now known as FinnElija
02:19:49 td_ joins (~td@muedsl-82-207-238-063.citykom.de)
02:22:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:26:14 × phma quits (phma@2001:5b0:211f:8638:196:5581:d6d8:1f7e) (Remote host closed the connection)
02:26:43 phma joins (~phma@2001:5b0:211f:8638:196:5581:d6d8:1f7e)
02:34:03 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
02:36:40 thonkpod joins (~thonkpod@user/thonkpod)
02:38:56 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
02:41:30 shriekingnoise joins (~shrieking@186.137.144.80)
02:44:37 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:53:24 × MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 255 seconds)
02:57:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
02:57:29 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
03:01:37 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
03:03:18 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
03:08:33 × FixedPointDude quits (~FixedPoin@204.237.49.106) (Quit: Client closed)
03:09:57 <dsal> stevenxl: arbitrary = notOnes >>= \a -> notOnes >>= \b -> pure $ a <> [1] <> b
03:10:28 <Axman6> notOnes could just be arbitrary
03:10:42 <Axman6> all that's needed is that it contains a one, not that it contains only one one
03:10:55 <dsal> Where notOnes = arbitrary `suchThat` (notElem 1)
03:11:00 <dsal> Oh, then yeah
03:11:37 <Axman6> concat <$> sequence [arbitrary, pure [1], arbitrary]
03:12:03 <dsal> Yeah. That's a good one.
03:12:19 <dsal> I'm on a phone with part of my brain missing. :)
03:15:55 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
03:16:08 <Axman6> It was a good team effort
03:16:16 favonia joins (~favonia@user/favonia)
03:16:21 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
03:17:54 × swistak quits (~swistak@185.21.216.141) (Ping timeout: 252 seconds)
03:19:32 <stevenxl> Great team effort!
03:19:35 <stevenxl> lol. Thank you all.
03:21:55 × alx741 quits (~alx741@186.178.109.32) (Quit: alx741)
03:21:56 swistak joins (~swistak@185.21.216.141)
03:24:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:25:22 × derelict quits (~derelict@user/derelict) (Ping timeout: 246 seconds)
03:29:51 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
03:30:24 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
03:30:34 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:33:40 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
03:34:31 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
03:34:55 geekosaur joins (~geekosaur@xmonad/geekosaur)
03:35:15 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
03:37:57 favonia joins (~favonia@user/favonia)
03:40:16 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
03:40:45 geekosaur joins (~geekosaur@xmonad/geekosaur)
03:41:03 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
03:43:29 cheater1__ joins (~Username@user/cheater)
03:43:45 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
03:43:51 cheater1__ is now known as cheater
03:45:36 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Ping timeout: 255 seconds)
03:47:30 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
03:50:06 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
03:51:46 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 258 seconds)
03:54:46 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
03:55:30 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
03:57:50 favonia joins (~favonia@user/favonia)
04:08:14 wei2912 joins (~wei2912@112.199.250.21)
04:09:11 img joins (~img@user/img)
04:19:04 anandprabhu joins (~anandprab@94.202.243.198)
04:21:47 × isekaijin quits (~pyon@user/pyon) (Ping timeout: 255 seconds)
04:22:34 <Guest43> so I know GHC doesn't remember type information at runtime, does that mean it turns everything like identity :: [Wrap1 a] -> [Wrap2 a] into a noop?
04:24:05 isekaijin joins (~pyon@user/pyon)
04:24:29 <Guest43> specifically if a function performs no term-level operation, will GHC reliably recognize that?
04:25:45 × anandprabhu quits (~anandprab@94.202.243.198) (Remote host closed the connection)
04:28:48 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
04:29:13 favonia joins (~favonia@user/favonia)
04:30:16 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
04:48:34 <Axman6> I don't think so
04:49:14 <Axman6> I know GHC has several RULES defined for removing id specifically if it's used somewhere where it would be a no-op (though these days coersions are probably where the preferred way to do that)
04:53:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
04:53:50 <Guest43> i see; so use id/coerce if I can, but no guarantees it won't traverse the list anyway at runtime?
04:55:21 favonia joins (~favonia@user/favonia)
04:55:48 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
04:57:26 <Axman6> yeah, that's basically exactly the usecase (and most used example) of why the safe coersions stuff exists. worth reading the paper, it's very approachable
04:58:13 <Guest43> cool thanks, and yeah i'll check it out
05:00:27 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 276 seconds)
05:03:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
05:04:01 beka joins (~beka@104-244-27-23.static.monkeybrains.net)
05:04:04 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
05:04:33 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
05:04:35 cheater joins (~Username@user/cheater)
05:05:28 ph88 joins (~ph88@2a02:8109:9e00:7e5c:500a:f04e:5614:56a9)
05:06:04 × azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 252 seconds)
05:12:31 × smitop quits (~smitop@user/smitop) (Ping timeout: 268 seconds)
05:12:54 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
05:15:19 favonia joins (~favonia@user/favonia)
05:18:57 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:23:29 smitop joins (~smitop@user/smitop)
05:23:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
05:24:50 × chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection)
05:25:18 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:25:32 chris-the-slurpa joins (~chris@81.96.113.213)
05:25:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:30:00 × chris-the-slurpa quits (~chris@81.96.113.213) (Ping timeout: 255 seconds)
05:33:22 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
05:35:40 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
05:35:52 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
05:36:11 sheepduck joins (~sheepduck@user/sheepduck)
05:40:07 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 246 seconds)
05:42:35 Pickchea joins (~private@user/pickchea)
05:44:19 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
05:46:50 azeem joins (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it)
05:48:13 × xsperry quits (~as@user/xsperry) ()
05:48:41 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
05:52:01 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
05:52:40 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 265 seconds)
05:55:32 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 245 seconds)
05:56:08 xsperry joins (~as@user/xsperry)
05:58:48 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
05:59:05 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
05:59:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
06:00:36 berberman joins (~berberman@user/berberman)
06:00:58 jneira joins (~jneira@212.8.115.226)
06:01:03 × berberman_ quits (~berberman@user/berberman) (Ping timeout: 255 seconds)
06:03:43 × EvanR quits (~evan@mail.evanr.info) (Changing host)
06:03:43 EvanR joins (~evan@user/evanr)
06:06:10 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
06:07:10 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds)
06:13:15 qbt joins (~edun@user/edun)
06:17:19 × azeem quits (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it) (Ping timeout: 265 seconds)
06:19:06 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
06:25:25 azeem joins (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it)
06:28:53 chele joins (~chele@user/chele)
06:33:27 × Pickchea quits (~private@user/pickchea) (Ping timeout: 245 seconds)
06:36:00 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
06:47:35 prite joins (~pritam@user/pritambaral)
06:52:42 anandprabhu joins (~anandprab@94.202.243.198)
06:53:57 fendor joins (~fendor@77.119.210.250.wireless.dyn.drei.com)
06:54:19 × Guest2168 quits (~Guest21@187.83.249.216.dyn.smithville.net) (Ping timeout: 246 seconds)
06:54:40 × Guest43 quits (~Guest43@187.83.249.216.dyn.smithville.net) (Ping timeout: 246 seconds)
07:03:42 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:04:44 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
07:07:16 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
07:07:33 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
07:08:01 pesada joins (~agua@2804:18:4f:750a:1:0:192e:7017)
07:10:27 × agua quits (~agua@2804:18:46:bafa:1:0:1551:7319) (Ping timeout: 276 seconds)
07:12:15 eight joins (~eight@user/eight)
07:15:43 acidjnk joins (~acidjnk@p200300d0c72b9557fc98475d99842c11.dip0.t-ipconnect.de)
07:16:15 acidjnk_new joins (~acidjnk@p200300d0c72b9557e15cb996b96a0953.dip0.t-ipconnect.de)
07:17:06 Gurkenglas_ joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
07:19:12 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:19:32 × beka quits (~beka@104-244-27-23.static.monkeybrains.net) (Ping timeout: 252 seconds)
07:20:07 × acidjnk quits (~acidjnk@p200300d0c72b9557fc98475d99842c11.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
07:20:10 epolanski joins (uid312403@id-312403.brockwell.irccloud.com)
07:20:30 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
07:24:12 fef joins (~thedawn@user/thedawn)
07:25:17 × prite quits (~pritam@user/pritambaral) (Ping timeout: 258 seconds)
07:27:01 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection)
07:28:33 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:31:29 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:45:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:48:51 prite joins (~pritam@user/pritambaral)
07:52:14 × bens quits (~bens@www.typius.com) (Ping timeout: 268 seconds)
07:52:27 bens joins (~bens@www.typius.com)
07:53:44 gehmehgeh joins (~user@user/gehmehgeh)
07:55:19 × smitop quits (~smitop@user/smitop) (Ping timeout: 268 seconds)
07:55:30 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:58:00 nattiestnate joins (~nate@36.70.197.105)
08:06:15 hendursa1 joins (~weechat@user/hendursaga)
08:06:56 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
08:08:52 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:09:10 michalz joins (~michalz@185.246.204.60)
08:10:12 smitop joins (~smitop@user/smitop)
08:10:12 arahael1 joins (~arahael@203-206-95-20.tpgi.com.au)
08:10:39 × TheRAt quits (~TheRAt@user/therat) (Quit: :))
08:10:47 × sheepduck quits (~sheepduck@user/sheepduck) (Quit: Konversation terminated!)
08:11:21 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
08:12:21 × arahael quits (~arahael@118.211.182.212) (Ping timeout: 265 seconds)
08:16:48 hegstal joins (~hegstal@2a02:c7f:7604:8a00:cd80:9697:e922:dc30)
08:17:30 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
08:17:55 geekosaur joins (~geekosaur@xmonad/geekosaur)
08:18:23 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
08:18:30 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
08:18:42 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
08:19:15 delYsid joins (~user@zidpc777.tugraz.at)
08:21:57 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
08:22:45 arahael1 is now known as arahael
08:23:27 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 245 seconds)
08:23:38 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
08:23:59 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
08:24:00 × phma quits (~phma@2001:5b0:211f:8638:196:5581:d6d8:1f7e) (Read error: Connection reset by peer)
08:24:13 lavaman joins (~lavaman@98.38.249.169)
08:25:41 × smitop quits (~smitop@user/smitop) (Ping timeout: 255 seconds)
08:25:58 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
08:25:59 zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
08:26:44 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
08:27:12 Lord_of_Life_ is now known as Lord_of_Life
08:28:18 × prite quits (~pritam@user/pritambaral) (Ping timeout: 265 seconds)
08:28:28 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
08:29:37 prite joins (~pritam@user/pritambaral)
08:30:48 phma joins (phma@2001:5b0:211b:8138:4237:c684:b0bd:87ec)
08:32:55 ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
08:34:12 martin02 joins (silas@hund.fs.lmu.de)
08:35:03 × desophos quits (~desophos@2601:249:1680:a570:489c:f364:abf0:5de7) (Quit: Leaving)
08:35:50 × _xor quits (~xor@74.215.46.133) (Quit: brb)
08:37:12 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
08:37:56 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
08:39:59 smitop joins (~smitop@user/smitop)
08:43:54 × nattiestnate quits (~nate@36.70.197.105) (Quit: WeeChat 3.2)
08:44:49 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
08:45:18 × Patternmaster quits (~georg@li1192-118.members.linode.com) (Remote host closed the connection)
08:48:02 × stevenxl quits (uid133530@id-133530.highgate.irccloud.com) (Quit: Connection closed for inactivity)
08:49:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
08:51:10 jippiedoe joins (~david@2a02-a44c-e14e-1-1e76-24e-f48d-1c7a.fixed6.kpn.net)
08:51:18 Patternmaster joins (~georg@li1192-118.members.linode.com)
08:53:04 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
08:54:11 zaquest joins (~notzaques@5.128.210.178)
08:54:41 lavaman joins (~lavaman@98.38.249.169)
08:56:00 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:58:37 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
08:59:26 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
09:00:36 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
09:01:47 × smitop quits (~smitop@user/smitop) (Ping timeout: 245 seconds)
09:02:52 smitop joins (~smitop@user/smitop)
09:03:42 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
09:03:56 juhp joins (~juhp@128.106.188.66)
09:05:54 × hgolden_ quits (~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Ping timeout: 252 seconds)
09:07:54 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
09:08:25 delYsid parts (~user@zidpc777.tugraz.at) (ERC (IRC client for Emacs 27.1.50))
09:13:10 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
09:14:15 __monty__ joins (~toonn@user/toonn)
09:14:16 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
09:15:13 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:17:43 jumper149 joins (~jumper149@80.240.31.34)
09:24:23 elf_fortrez joins (~elf_fortr@adsl-72-50-4-50.prtc.net)
09:25:20 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
09:26:56 × ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Quit: ubert)
09:27:40 Pickchea joins (~private@user/pickchea)
09:33:23 lavaman joins (~lavaman@98.38.249.169)
09:34:07 fef joins (~thedawn@user/thedawn)
09:37:19 mc47 joins (~mc47@xmonad/TheMC47)
09:37:37 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
09:38:14 × mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
09:39:00 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
09:39:16 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Remote host closed the connection)
09:40:27 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
09:40:36 × koolazer quits (~koo@user/koolazer) (Ping timeout: 272 seconds)
09:43:42 koolazer joins (~koo@user/koolazer)
09:43:42 × haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
09:43:55 haykam1 joins (~haykam@static.100.2.21.65.clients.your-server.de)
09:49:29 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
09:54:11 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
09:56:47 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
10:05:52 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
10:10:42 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Remote host closed the connection)
10:11:25 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
10:12:18 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
10:12:43 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Client Quit)
10:12:54 fef joins (~thedawn@user/thedawn)
10:13:07 × elf_fortrez quits (~elf_fortr@adsl-72-50-4-50.prtc.net) (Ping timeout: 246 seconds)
10:15:36 × koolazer quits (~koo@user/koolazer) (Ping timeout: 265 seconds)
10:15:46 × xsperry quits (~as@user/xsperry) (Remote host closed the connection)
10:15:51 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:18:31 neurocyte4042 joins (~neurocyte@212.232.92.52)
10:18:32 × neurocyte4042 quits (~neurocyte@212.232.92.52) (Changing host)
10:18:32 neurocyte4042 joins (~neurocyte@user/neurocyte)
10:20:33 neurocyte4042 is now known as neurocyte
10:23:37 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
10:24:53 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Client Quit)
10:35:12 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
10:35:18 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
10:43:52 × prite quits (~pritam@user/pritambaral) (Ping timeout: 245 seconds)
10:45:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:46:22 × Pickchea quits (~private@user/pickchea) (Ping timeout: 245 seconds)
10:47:34 jakalx parts (~jakalx@base.jakalx.net) ()
10:48:04 prite joins (~pritam@user/pritambaral)
10:48:57 smichel17 joins (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
10:51:12 jakalx joins (~jakalx@base.jakalx.net)
10:53:49 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
10:57:27 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
11:02:02 × anandprabhu quits (~anandprab@94.202.243.198) (Read error: Connection reset by peer)
11:03:01 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
11:03:02 × oxide quits (~lambda@user/oxide) (Ping timeout: 245 seconds)
11:05:00 oxide joins (~lambda@user/oxide)
11:07:31 acidjnk_new3 joins (~acidjnk@p200300d0c72b9516e15cb996b96a0953.dip0.t-ipconnect.de)
11:10:29 Topsi joins (~Tobias@dyndsl-095-033-020-123.ewe-ip-backbone.de)
11:10:31 <yin[m]> matrix down again. last message from 6h ago
11:10:32 × acidjnk_new quits (~acidjnk@p200300d0c72b9557e15cb996b96a0953.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
11:16:43 <tomsmeding> yin[m]: on irc this was the last message https://ircbrowse.tomsmeding.com/browse/lchaskell?id=94477#trid94477
11:16:48 koolazer joins (~koo@user/koolazer)
11:17:59 × silverwhitefish quits (~hidden@47.202.102.10) (Quit: One for all, all for One (2 Corinthians 5))
11:18:56 <Topsi> If I have the constraint (MyClass a, MyClass b, a ~ b), will this translate to 2 class-dictionaries passed at runtime or 1? Assuming both are used.
11:19:39 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
11:19:43 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
11:22:33 zdleaf is now known as zinc
11:24:17 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
11:26:22 Pickchea joins (~private@user/pickchea)
11:33:53 <tomsmeding> Topsi: for a test with f :: (Show a, Show b, a ~ b) => a -> b -> String ; f x y = show x ++ show y, looking at the optimised Core only one dictionary is passed
11:34:27 <tomsmeding> if you want some guarantees, either look at the core yourself for the function you're interested in, or ask in #ghc :p
11:35:15 <tomsmeding> it does seem to take an additional actual argument for the equality constraint
11:37:12 <tomsmeding> ah it looks like that additional argument is a coercion, which I expect shouldn't have any runtime representation? But I don't know
11:38:22 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
11:40:49 lavaman joins (~lavaman@98.38.249.169)
11:43:02 × eight quits (~eight@user/eight) (Ping timeout: 245 seconds)
11:43:22 eight joins (~eight@user/eight)
11:45:18 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
11:45:19 × azeem quits (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it) (Read error: Connection reset by peer)
11:48:53 × koolazer quits (~koo@user/koolazer) (Ping timeout: 265 seconds)
11:52:41 azeem joins (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it)
11:53:02 × Natch quits (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
11:57:24 × azeem quits (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it) (Read error: Connection reset by peer)
11:57:53 <yin[m]> tomsmeding: my bad
11:58:25 Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
12:00:44 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
12:01:08 juhp joins (~juhp@128.106.188.66)
12:04:54 azeem joins (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it)
12:07:34 <maerwald> https://hackage.haskell.org/package/rio-0.1.20.0/docs/RIO-Process.html am I missing something or does this look over-engineered?
12:11:07 × Pickchea quits (~private@user/pickchea) (Ping timeout: 265 seconds)
12:12:13 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 244 seconds)
12:12:52 <hpc> yeah, i would rather use System.Process
12:13:13 <Profpatsch> looks that way
12:13:18 <Profpatsch> caching PATH is a bad idea
12:14:28 gehmehgeh joins (~user@user/gehmehgeh)
12:14:52 <maerwald> It took me 15 minutes just to figure out how to... well... spawn a process
12:15:43 <maerwald> and then you have to shove the env vars into the RIO env
12:15:49 favonia joins (~favonia@user/favonia)
12:20:47 absence_ is now known as absence
12:21:54 <absence> in ghc 9, template haskell was changed so liftTyped returns Quote m => Code m a instead of Q (TExp a). this breaks the code "either fail liftTyped something" because Code doesn't have a MonadFail instance. what's the recommended way to deal with this? manually wrap the result of fail in Code, i.e. "either (Code . fail) liftTyped something", or does that have other consequences?
12:24:35 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
12:24:40 stevenxl joins (uid133530@id-133530.highgate.irccloud.com)
12:25:23 Pickchea joins (~private@user/pickchea)
12:26:53 Guest12 joins (~Guest12@static-72-73-22-17.clppva.fios.verizon.net)
12:27:46 lavaman joins (~lavaman@98.38.249.169)
12:28:06 × jespada quits (~jespada@90.254.247.46) (Ping timeout: 256 seconds)
12:28:25 × Guest12 quits (~Guest12@static-72-73-22-17.clppva.fios.verizon.net) (Client Quit)
12:29:36 jespada joins (~jespada@90.254.247.46)
12:32:23 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
12:34:58 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
12:35:32 fef joins (~thedawn@user/thedawn)
12:36:12 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
12:36:49 fef joins (~thedawn@user/thedawn)
12:41:34 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:42:20 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
12:42:47 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:500a:f04e:5614:56a9) (Remote host closed the connection)
12:42:58 jneira joins (~jneira@212.8.115.226)
12:43:40 ph88 joins (~ph88@2a02:8109:9e00:7e5c:9925:18b1:79f7:f242)
12:47:31 koolazer joins (~koo@user/koolazer)
12:51:43 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
12:52:00 geekosaur joins (~geekosaur@xmonad/geekosaur)
12:57:01 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
12:59:58 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:01:07 alx741 joins (~alx741@186.178.109.32)
13:01:29 lavaman joins (~lavaman@98.38.249.169)
13:04:12 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
13:12:01 thyriaen joins (~thyriaen@45.178.73.238)
13:12:57 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
13:14:05 <thyriaen> howdy, friends i do not understand why this gets pattern matched on the Leaf rule, when it is not: https://paste.tomsmeding.com/plDEEwT7
13:15:18 × Gurkenglas_ quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
13:15:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:17:09 <jippiedoe> @thyriaen in `insert`, you only return the result of the recursive call (instead of wrapping it in the rest of the tree again)
13:17:09 <lambdabot> Unknown command, try @list
13:18:14 <thyriaen> jippiedoe, in the insert lm Leaf case ?
13:18:26 Sgeo joins (~Sgeo@user/sgeo)
13:18:40 <jippiedoe> in the insert lm Node case!
13:19:06 <thyriaen> but i am inserting it again in that case
13:19:21 × prite quits (~pritam@user/pritambaral) (Ping timeout: 268 seconds)
13:19:28 <thyriaen> ohhh
13:19:38 <thyriaen> im quite dumb i make the recursive call but dont put it in a tree
13:19:39 <thyriaen> xD
13:20:10 prite joins (~pritam@user/pritambaral)
13:20:15 <thyriaen> well now i know why the gardener left me
13:20:32 × koolazer quits (~koo@user/koolazer) (Ping timeout: 245 seconds)
13:21:19 <tomsmeding> thyriaen: sometimes you need a pair of eyes that haven't been staring at the code yet to see what's going wrong :)
13:21:25 <tomsmeding> I can recommend rubber ducks
13:21:59 <thyriaen> :p
13:24:09 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
13:24:29 hendursaga joins (~weechat@user/hendursaga)
13:26:27 × hendursaga quits (~weechat@user/hendursaga) (Client Quit)
13:26:52 hendursaga joins (~weechat@user/hendursaga)
13:27:17 shriekingnoise joins (~shrieking@186.137.144.80)
13:29:51 × thyriaen quits (~thyriaen@45.178.73.238) (Quit: Leaving)
13:30:00 silverwhitefish joins (~hidden@47.202.102.10)
13:30:19 chris_ joins (~chris@81.96.113.213)
13:30:25 × haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
13:30:38 haykam1 joins (~haykam@static.100.2.21.65.clients.your-server.de)
13:34:29 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
13:35:19 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
13:36:00 × zgrep quits (~zgrep@user/zgrep) (Quit: It's a quitter's world.)
13:37:32 zgrep joins (~zgrep@user/zgrep)
13:37:37 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9516e15cb996b96a0953.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
13:47:56 madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net)
13:50:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
13:53:20 × Pickchea quits (~private@user/pickchea) (Ping timeout: 252 seconds)
13:55:07 × michalz quits (~michalz@185.246.204.60) (Remote host closed the connection)
13:56:33 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
13:59:17 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 245 seconds)
14:02:10 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
14:02:12 allbery_b joins (~geekosaur@xmonad/geekosaur)
14:03:46 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
14:07:21 allbery_b is now known as geekosaur
14:12:34 × Topsi quits (~Tobias@dyndsl-095-033-020-123.ewe-ip-backbone.de) (Quit: Leaving.)
14:14:43 pharmaz0ne joins (~pharmaz0n@92.40.194.74.threembb.co.uk)
14:15:02 × pharmaz0ne quits (~pharmaz0n@92.40.194.74.threembb.co.uk) (Client Quit)
14:15:04 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
14:17:04 pharmaz0ne joins (~pharmaz0n@92.40.194.74.threembb.co.uk)
14:17:05 Atum_ joins (~IRC@user/atum/x-2392232)
14:17:08 × Atum_ quits (~IRC@user/atum/x-2392232) (Client Quit)
14:17:18 Pickchea joins (~private@user/pickchea)
14:17:43 Atum_ joins (IRC@user/atum/x-2392232)
14:21:58 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
14:22:07 biberu joins (~biberu@user/biberu)
14:24:34 jakalx parts (~jakalx@base.jakalx.net) ()
14:28:49 jakalx joins (~jakalx@base.jakalx.net)
14:30:11 × Pickchea quits (~private@user/pickchea) (Ping timeout: 255 seconds)
14:39:06 derelict joins (~derelict@user/derelict)
14:39:19 anandprabhu joins (~anandprab@94.202.243.198)
14:41:17 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
14:42:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:43:01 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
14:43:55 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
14:46:30 × madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 258 seconds)
14:52:15 × HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
14:52:32 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
14:56:15 koolazer joins (~koo@user/koolazer)
14:59:35 × azeem quits (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it) (Ping timeout: 268 seconds)
15:01:23 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:02:07 azeem joins (~azeem@176.201.40.210)
15:03:48 × dajoer quits (~david@user/gvx) (Quit: leaving)
15:04:01 ec joins (~ec@gateway/tor-sasl/ec)
15:04:37 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:05:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
15:07:24 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
15:07:47 × azeem quits (~azeem@176.201.40.210) (Read error: Connection reset by peer)
15:08:07 azeem joins (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it)
15:08:22 cheater1__ joins (~Username@user/cheater)
15:08:40 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
15:08:45 cheater1__ is now known as cheater
15:13:04 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
15:13:15 juhp joins (~juhp@128.106.188.66)
15:20:13 × chomwitt quits (~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
15:22:22 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
15:26:34 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:29:06 jakalx parts (~jakalx@base.jakalx.net) ()
15:31:33 jakalx joins (~jakalx@base.jakalx.net)
15:32:03 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
15:33:04 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Quit: ZNC 1.8.2 - https://znc.in)
15:33:39 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
15:34:14 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
15:34:25 × koolazer quits (~koo@user/koolazer) (Ping timeout: 258 seconds)
15:35:44 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
15:37:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:38:15 lbseale joins (~lbseale@user/ep1ctetus)
15:38:25 <hololeap> is caching PATH really that bad of an idea? it doesn't seem like something that would change very often
15:39:22 Guest21 joins (~Guest21@187.83.249.216.dyn.smithville.net)
15:39:27 <Clint> where?
15:39:45 ec joins (~ec@gateway/tor-sasl/ec)
15:40:02 <hololeap> https://hackage.haskell.org/package/rio-0.1.20.0/docs/RIO-Process.html
15:40:17 <Rembane> hololeap: Assume that someone will mess it up for you.
15:40:58 <tomsmeding> that's within one process, right? Normally environment variables don't change in one process unless you explicitly change it :)
15:41:01 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
15:41:29 <tomsmeding> though I guess that "cache PATH lookups" refers to caching the location of particular binary names in the file system as looked up in the PATH, which is a different story altogether
15:42:28 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
15:42:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
15:49:29 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
15:50:39 <Profpatsch> It introduces a caching layer, which is always a bad idea
15:50:58 <Profpatsch> They probably implement their own lookup logic
15:51:41 <Profpatsch> Granted, environment variables *probably* don’t change in most programs
15:53:23 <Profpatsch> but now you have to have a state that you need to carry around and a lot of logic around something
15:53:31 slowButPresent joins (~slowButPr@user/slowbutpresent)
15:55:19 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
15:55:44 ec joins (~ec@gateway/tor-sasl/ec)
15:57:29 <[exa]> hololeap: PATH lists in some certain environments (I'd even say nix) are pretty fat, if you save say 100 calls of stat(2) for one execve(2) it usually starts paying off
15:57:53 × qbt quits (~edun@user/edun) (Quit: WeeChat 3.2)
15:58:09 qbt joins (~edun@user/edun)
15:58:44 <[exa]> Profpatsch: feel free remove your L1&L2 cache and reiterate on the caches as bad ideas
15:59:08 <ephemient> (ba)sh caches PATH lookups, but has a (re)hash command to manipulate it because it can be wrong
15:59:58 × Guest21 quits (~Guest21@187.83.249.216.dyn.smithville.net) (Ping timeout: 246 seconds)
16:00:52 lavaman joins (~lavaman@98.38.249.169)
16:01:29 mcglk joins (~mcglk@131.191.49.120)
16:01:41 <tomsmeding> caching is sometimes good, sometimes _REALLY_ good, but certainly not always good
16:01:48 <EvanR> a caching layer is great when it's never wrong
16:02:18 <tomsmeding> and pays off in comparison to the required maintenance effort
16:02:39 <tomsmeding> it's an optimisation, and any optimisation is a tradeoff :)
16:03:06 <EvanR> L* cache, my maintenance effort is zero and it's never wrong xD
16:03:19 <EvanR> HTTP caching, maintenance effort high and is never right!
16:03:44 alan41 joins (~alan@83-245-249-101-nat-p.elisa-mobile.fi)
16:03:48 <tomsmeding> and yet, if you'd turn off http caching in your browser, many websites would get a lot slower
16:04:06 <davean> Uh, if your HTTP cache is wrong, the upstream site fucked up
16:04:08 tomsmeding doubts "never right"
16:04:18 <tomsmeding> davean: which happens
16:04:26 <davean> HTTP has a plenty expressive caching semantics
16:04:28 <tomsmeding> but not enough to warrant "never right" :)
16:04:34 × alan41 quits (~alan@83-245-249-101-nat-p.elisa-mobile.fi) (Client Quit)
16:04:35 xsperry joins (~as@user/xsperry)
16:04:36 <EvanR> when it's your (my) upstream site, that explains it
16:05:07 <EvanR> anyway web tech gives caching a bad name
16:05:07 × pharmaz0ne quits (~pharmaz0n@92.40.194.74.threembb.co.uk) (Read error: Connection reset by peer)
16:05:31 <tomsmeding> build tools also do, because of the rare instances when they're wrong
16:05:34 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
16:06:41 <EvanR> I am still perplexed that caching schemes are allowed to be wrong
16:06:43 <tomsmeding> some regular in this channel (I forget who) has complained multiple times about weird behaviour because cabal thought some build product could be cached when it should've been recompiled
16:07:04 <EvanR> even if rarely, that would be unacceptable for the memory system's cache
16:07:09 <tomsmeding> EvanR: is there a caching scheme that is _intentionally_ allowed to be wrong?
16:07:26 <tomsmeding> oh right, bash
16:07:32 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
16:07:35 <EvanR> in the sense that the wrongness is observable
16:08:00 cheater1__ joins (~Username@user/cheater)
16:08:12 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
16:08:12 cheater1__ is now known as cheater
16:08:14 <EvanR> whether because you went outside the bounds of unwritten rules of engagement, or just there are no rules here and everyone is doing whatever
16:09:10 <davean> You can only have a correct cache in regards to semantics
16:09:12 <EvanR> lets put it this way, if you hear someone complaining about their build systems cache being wrong, no one ever calls that a bug
16:09:25 <EvanR> it's a problem with the user
16:09:34 <tomsmeding> does no one?
16:09:37 <EvanR> i called that 'allowed to be wrong'
16:09:49 <tomsmeding> I have the exact opposite experience :p
16:09:50 <davean> Uh, no people always call that a bug
16:10:12 <EvanR> ok, the take away here is I have nothing whatsoever to add
16:10:25 <EvanR> just take the opposite of what i say, and we're good i guess
16:10:29 <davean> I guess
16:10:31 <tomsmeding> the _real_ take away is "software engineering is hard" :p
16:10:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:10:54 pfurla joins (~pfurla@216.131.82.58)
16:11:05 <EvanR> you see no difference whatsoever between the track record of memory system cache and other caching systems? xD
16:11:24 <tomsmeding> it's just that if there is a bug in the memory system cache, everything blows up
16:11:28 <EvanR> it seems like one is allowed to be wrong
16:11:29 <davean> The memory system cache is wrong sometimes.
16:11:43 <tomsmeding> that doesn't mean that a bug in cabal's caching scheme wouldn't be a bug
16:11:57 <EvanR> an actual bug, yeah
16:12:17 <EvanR> if you just don't know how to use cabal...
16:12:37 <davean> compilers (mostly) know how to use the memory cache
16:12:41 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
16:12:45 <davean> but this is actually a point of great debate
16:12:53 <davean> I'm surpised you're unfamiliar with it
16:13:03 <davean> memory ordering is a HUGE deal in compiler code generation
16:13:14 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
16:13:19 <EvanR> I'm totally unfamiliar with that, in any detail
16:13:54 × pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 272 seconds)
16:14:43 <EvanR> so compilers don't treat the cache as a 'would be nice' bonus effect, but actively try to whisper it and get as much performance as possible?
16:15:12 <EvanR> that sounds like hell for cache designers
16:15:14 elf_fortrez joins (~elf_fortr@adsl-72-50-4-118.prtc.net)
16:15:38 <davean> Its not "would be nice" its a "can be incorrect under ..."
16:15:45 <davean> and then they also give it specific commands
16:15:50 <davean> evictions, prefetches ...
16:16:18 <davean> and compilers know the cache can get bad results and try to avoid it
16:16:26 <davean> you can write to a memory location, but read an old value for example
16:16:39 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
16:16:51 <EvanR> really... I thought that was a serious security problem a while back and had to be fixed
16:17:07 jneira[m] joins (~jneira@214.red-176-83-92.dynamicip.rima-tde.net)
16:17:09 <davean> No, the security problem was making decisions based on memory *you weren't allowed to read*
16:17:13 <davean> which also interacted with the cache
16:17:16 <davean> but also with speculation
16:17:19 <davean> etc
16:17:38 <EvanR> oof
16:17:39 <davean> The concept of the cache giving wrong results generally falls under the term "memory ordering"
16:18:12 <davean> https://en.wikipedia.org/wiki/Memory_ordering
16:18:19 <davean> but also in multicore consistency, etc
16:18:31 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
16:18:32 cheater1__ joins (~Username@user/cheater)
16:18:34 cheater1__ is now known as cheater
16:18:50 <davean> If you use the CPU cache correctly you get correct results - if you use HTTP caching correctly you get correct result
16:19:00 <davean> theres no mysteries here - other than what the x86 cache actually does!
16:19:05 <davean> Its a bit unknown on x86
16:19:15 <davean> ARM for example actually has something of a specification
16:19:44 <davean> Mind you that wikipedia article focuses more on the instruction pipeline
16:20:13 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
16:20:30 <davean> Both HTTP and the CPU cache directly tie back to https://en.wikipedia.org/wiki/Consistency_model
16:20:53 <EvanR> can we has a type system that guarantees correct use of cache
16:21:08 <davean> uh ...
16:21:16 × jippiedoe quits (~david@2a02-a44c-e14e-1-1e76-24e-f48d-1c7a.fixed6.kpn.net) (Ping timeout: 268 seconds)
16:21:24 <davean> Not for x86
16:21:35 <davean> because we don't know the semantics for x86 so we'd have nothing to type against
16:21:39 <davean> for ARM or something?
16:21:50 × anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving)
16:22:01 <davean> sure, but you'd not like the type system, because it would dictact what came before and after for variable distances.
16:22:19 <davean> Your types would be like some form of hoare triples I guess ...
16:22:31 <EvanR> cool
16:22:41 <davean> The compiler deals with this for you though
16:22:43 <davean> thats its job
16:22:47 <Profpatsch> [exa]: reductio ad absurdum
16:22:58 <davean> its job is to be a compitent CPU user, like yours is to be a compitent cabal user
16:23:02 <EvanR> it could maybe be a type system for use in a compiler
16:23:26 <davean> EvanR: I think this is a better place for something like a model checker
16:23:54 <davean> which, wait, is what we actually use currently
16:23:58 <davean> so I guess thats a boring statement
16:25:46 <davean> Well I'm kinda getting bored of giving a "how computers work - the basics" lecture, so I think I'll wander away
16:26:53 <davean> I will say though if you want to do any performance optimisation in your future, I'd spend a few hours reading about this stuff, it only takes a few hours
16:27:17 <davean> Computers are actually really simple
16:27:32 <davean> You could learn enough to build one in a day
16:27:58 <hololeap> what would be the recommended way to bind a python library to a haskell interface?
16:28:22 <lechner> Hi, is yesod still a suitable foundation for a website these days? Thanks!
16:28:30 <EvanR> all that aside, would be cool if websites showed the latest version, according to timestamps xD
16:28:51 × jneira[m] quits (~jneira@214.red-176-83-92.dynamicip.rima-tde.net) (Remote host closed the connection)
16:29:11 <EvanR> sorry for boring!
16:29:24 <davean> EvanR: its cool, and they CAN
16:29:27 <davean> EvanR: if they don't, its by choice
16:29:42 × Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 255 seconds)
16:30:30 <davean> (For a trivial version: You put an ETag on the root page, you stick your resource at hashs, and set the hashes to cache forever since they're content addressed)
16:31:11 ec joins (~ec@gateway/tor-sasl/ec)
16:32:28 <davean> EvanR: the HTTP cache semantics are layed out in the RFC, and seperate CDN style caches from user's browser caches, and CDNs can do semi-consistent invalidations
16:32:35 <davean> so this is ENTIRELY on the website in question
16:34:03 <davean> EvanR: I you ever run a website you care to actually get performant and correct, I'd be happy to talk about all the various options with you
16:34:15 hexfive joins (~eric@50.35.83.177)
16:34:34 <davean> I'll point out a site like reddit doesn't even SERVE fresh content.
16:34:39 <davean> never mind have the cache
16:34:42 <davean> its just too expensive
16:34:53 <davean> the content is updated by background tasks
16:35:02 jneira[m] joins (~jneira@214.red-176-83-92.dynamicip.rima-tde.net)
16:35:56 <davean> EvanR: Oh, you've probable seen the cleaner version of the above scheme - images like /.../img.jpg?12df22f2432fc22
16:36:13 <davean> That last piece after the question mark is a cache buster, which has the hash of the content
16:36:38 <davean> so you force your way through the cache whenever the content updates, but keep the nice base names
16:36:41 <EvanR> the poor timestamps, so unappreciated xD
16:37:02 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:37:14 <EvanR> anyway!
16:41:24 × Atum_ quits (IRC@user/atum/x-2392232) (Ping timeout: 255 seconds)
16:41:40 Gurkenglas_ joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
16:43:10 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
16:43:22 cheater1__ joins (~Username@user/cheater)
16:43:39 × derelict quits (~derelict@user/derelict) (Ping timeout: 255 seconds)
16:43:40 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
16:43:40 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
16:43:40 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
16:43:45 cheater1__ is now known as cheater
16:43:48 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
16:44:41 × jolly quits (~jolly@208.180.97.158) (Quit: Connection closed)
16:44:42 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 268 seconds)
16:45:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
16:46:42 × s_ quits (~s@50.34.81.185) (Quit: Leaving)
16:47:47 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:48:25 × qbt quits (~edun@user/edun) (Quit: WeeChat 3.2)
16:48:51 × jneira[m] quits (~jneira@214.red-176-83-92.dynamicip.rima-tde.net) (Remote host closed the connection)
16:49:44 × chele quits (~chele@user/chele) (Read error: Connection reset by peer)
16:50:19 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
16:52:21 qbt joins (~edun@user/edun)
16:53:52 MQ-17J joins (~MQ-17J@8.21.10.15)
16:53:56 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
16:58:06 chomwitt joins (~Pitsikoko@ppp-94-67-202-202.home.otenet.gr)
17:03:21 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
17:03:29 arkanoid joins (~arkanoid@2-238-151-49.ip244.fastwebnet.it)
17:03:35 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
17:03:44 <arkanoid> hello
17:03:49 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
17:07:27 <arkanoid> I'm not an haskell programmer, just a newcomer to FP that's reading book about category theory for programmers. The book give a lot of examples and talks about haskell, but there's a phrase that just triggered my curiosity: it says that Haskell standard library comes with proofs of correctness. Is that true?
17:10:53 Profpatsch parts (~Profpatsc@static.88-198-193-255.clients.your-server.de) (WeeChat 3.1)
17:11:29 <hololeap> arkanoid: is it the Milewski one?
17:11:50 <monochrom> The answer is no.
17:12:03 <davean> Uh, theres a liquid haskell covered base I think? Maybe?
17:12:08 <davean> Certainly not the standard library!
17:12:27 <davean> https://hackage.haskell.org/package/liquid-base I think?
17:12:36 <davean> I've certainly never looked into it
17:14:19 Atum_ joins (IRC@user/atum/x-2392232)
17:15:05 Pickchea joins (~private@user/pickchea)
17:15:20 <sm> lechner: certainly
17:17:02 <hololeap> arkanoid: I think he means that the type system provides a proof of correctness, but the type system can't do _every_ kind of validation
17:17:20 <hololeap> for instance, reverse :: [a] -> [a]
17:17:42 <hololeap> the type system does nothing to prove that this function works the way it's intended to
17:17:51 <davean> Well you can never do every kinda of validation, correctness is with respect to a specification
17:19:07 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:19:11 <davean> arkanoid: do you have more around the quote?
17:19:39 <hololeap> davean: https://github.com/hmemcpy/milewski-ctfp-pdf/releases/download/v19-eb86347/category-theory-for-programmers--eb86347.pdf
17:19:43 <hololeap> top of page 20
17:19:43 koolazer joins (~koo@user/koolazer)
17:20:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:20:39 <davean> hum
17:21:20 <davean> No, I don't think he means the liquid haskell one there, and I think that claim is bullshit.
17:21:27 P1RATEZ joins (piratez@user/p1ratez)
17:21:27 <davean> Though possibly technically correct in a sense
17:21:46 <davean> Though the liquid-haskell one might be of interest
17:22:21 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
17:22:30 cheater joins (~Username@user/cheater)
17:23:37 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
17:24:40 <davean> The types are a proof of some sort of correctness, but often not valid proofs
17:24:55 <davean> and don't cover all the stuff you should care about
17:25:06 <davean> Sure, they help
17:25:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:27:40 <davean> The standard library more provides your axioms
17:29:38 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
17:29:58 cheater joins (~Username@user/cheater)
17:33:30 × P1RATEZ quits (piratez@user/p1ratez) (Ping timeout: 265 seconds)
17:34:20 Guest27 joins (~Guest27@187.83.249.216.dyn.smithville.net)
17:35:35 Deide joins (~Deide@217.155.19.23)
17:35:35 × Deide quits (~Deide@217.155.19.23) (Changing host)
17:35:35 Deide joins (~Deide@user/deide)
17:37:11 <arkanoid> hololeap: yes is by Mr Milewski
17:40:39 <arkanoid> thanks for all the answers. Yes I do understand how that sentence might raise more than one eyebrow, but the author is clearly trying to make things easier and put things into categories (ba dum tss)
17:45:19 × elf_fortrez quits (~elf_fortr@adsl-72-50-4-118.prtc.net) (Ping timeout: 246 seconds)
17:45:38 <monochrom> I would s/not valid/weakened/
17:46:06 hexreel joins (~hr@69.233.98.238)
17:46:14 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
17:46:54 <monochrom> Also, while we're at curry-howard, types are claims, terms are proofs.
17:47:37 <monochrom> In Haskell, types are weakened claims, not invalid claims. This is a case of PEBKAC again.
17:48:19 ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
17:49:51 chris_ joins (~chris@81.96.113.213)
17:51:04 pfurla_ joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
17:52:56 <EvanR> something tells me this is a different sort of 'weak'
17:53:26 <EvanR> by weak you mean comes with more caveats?
17:54:03 ubikium joins (~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
17:54:04 × koolazer quits (~koo@user/koolazer) (Ping timeout: 246 seconds)
17:54:05 <monochrom> Yes. A "if it terminates" premise.
17:54:06 × pfurla quits (~pfurla@216.131.82.58) (Ping timeout: 268 seconds)
17:54:27 × ubikium quits (~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Client Quit)
17:56:26 <monochrom> Meta-ly, I have not read Milewski's book closely, I do not know whether he actually wrote that.
17:57:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:57:46 × Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_)
18:01:17 Atum_ joins (IRC@user/atum/x-2392232)
18:01:31 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
18:02:00 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds)
18:02:51 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
18:03:13 × euandreh quits (~euandreh@2804:14c:33:9fe5:50a8:9802:856c:54ce) (Quit: WeeChat 3.2)
18:03:54 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
18:05:35 × haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
18:05:48 haykam2 joins (~haykam@static.100.2.21.65.clients.your-server.de)
18:06:34 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
18:06:56 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
18:07:21 × MidAutumnMoon9 quits (~MidAutumn@user/midautumnmoon) (Ping timeout: 255 seconds)
18:11:35 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
18:12:07 cheater joins (~Username@user/cheater)
18:12:27 <davean> monochrom: they're not valid in the sense they're based on unsafePerformIO, unsafeCoerce, and prim-ops without axinomial specifications
18:12:56 <davean> 'base' is unbased, they have to be the axioms
18:13:11 chris_ joins (~chris@81.96.113.213)
18:14:19 MidAutumnMoon9 joins (~MidAutumn@user/midautumnmoon)
18:18:18 × hexreel quits (~hr@69.233.98.238) (Quit: nyaa~)
18:20:05 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
18:22:04 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
18:22:50 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
18:23:44 × epolanski quits (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
18:24:42 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
18:25:17 × ptrcmd quits (~ptrcmd@user/ptrcmd) (Quit: leaving)
18:25:47 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
18:26:44 cheater1__ joins (~Username@user/cheater)
18:26:45 <tomsmeding> it's quite based! Indeed, it's based on Falso http://sigtbd.csail.mit.edu/pubs/2016/paper9.pdf
18:26:54 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
18:26:57 cheater1__ is now known as cheater
18:30:33 × jneira_ quits (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Connection closed)
18:31:43 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
18:33:06 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
18:35:25 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
18:42:06 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 272 seconds)
18:42:28 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
18:47:41 jolly joins (~jolly@208.180.97.158)
18:49:00 × Guest27 quits (~Guest27@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
18:53:09 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
19:03:22 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Read error: Connection reset by peer)
19:03:36 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
19:03:46 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
19:06:02 × prite quits (~pritam@user/pritambaral) (Ping timeout: 255 seconds)
19:06:46 <burnsidesLlama> Hi, I'm thinking about a general definition for 'partial sums' on [a], which is a family of functions of type [a] -> [b], generalising functions such as [1,2,3] -> [0, 0+1, 0+1+2, 0+1+2+3]. The idea I'm following writing partial sums as "foldr f e . tails" or "foldr f e . inits", depending on the 'direction' of summation. I asked the question 'which choice is more natural? inits or tails?' and it seems the answer i
19:06:46 <burnsidesLlama> s that they are both natural, and in some sense 'dual' to each other. The most precise I have made this is that "forall xs :: [a], zipWith (++) (inits xs) (tails xs) = repeat xs". Is there a rigorous notion of duality here? Are there other places where a similar idea of duality shows up? I am new to irc, please let me know if I've done something inappropriate.
19:07:29 koolazer joins (~koo@user/koolazer)
19:08:01 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
19:08:14 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 265 seconds)
19:09:26 <dminuoso> burnsidesLlama: Shouldn't those definitions rather be some `fmap (foldr f e) . tails` or `fmap (foldr f e) . inits` ?
19:09:42 × qbt quits (~edun@user/edun) (Quit: WeeChat 3.2)
19:09:42 × azeem quits (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it) (Read error: Connection reset by peer)
19:09:47 <burnsidesLlama> Yes! I meant the lifted versions
19:09:54 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
19:10:32 azeem joins (~azeem@dynamic-adsl-84-220-239-177.clienti.tiscali.it)
19:10:57 cheater1__ joins (~Username@user/cheater)
19:11:11 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
19:11:20 cheater1__ is now known as cheater
19:11:33 <dminuoso> burnsidesLlama: At any rate. tails seems like a far better choice
19:12:01 <dminuoso> Well. "better" is a poor qualifier
19:12:20 <dminuoso> tails has better asymptotics
19:13:19 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 268 seconds)
19:14:10 × zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
19:14:39 <burnsidesLlama> I don't tails has better asymptotics. inits returns initial segments in increasing length order. It can be implemented as "inits [] = [], inits (x:xs) = [] : map (x:) (inits xs)"
19:15:18 <zzz> hlint: Unnecessary hiding, why not romove it?
19:15:20 zzz removes it
19:15:50 <zzz> ghc: Error: Ambiguous occurrence
19:16:07 <dminuoso> burnsidesLlama: Mmm. So it seems my information is just out-of-date here
19:16:22 <dminuoso> You cant implement inits naively if you ever expect fusion to occur.
19:16:37 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Read error: Connection reset by peer)
19:16:40 <dminuoso> Which is why the current version is implemented as: inits = map toListSB . scanl' snocSB emptySB
19:16:55 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
19:18:24 jippiedoe joins (~david@77-171-152-62.fixed.kpn.net)
19:19:14 <[exa]> burnsidesLlama: maybe bad question, but why not instead generalize the easier "flipped" direction, i.e., [1,2,3] -> [0, 1+0, 2+1+0, 3+2+1+0]
19:19:49 <burnsidesLlama> dminuoso I wasn't looking at the source earlier. What do you mean 'if you ever expect fusion to occur?', the source says something technical about consumers and producers
19:20:19 <[exa]> burnsidesLlama: ah I re-read your question now. :D
19:20:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:21:03 <dminuoso> burnsidesLlama: See https://gitlab.haskell.org/ghc/ghc/-/issues/9345
19:21:12 <[exa]> burnsidesLlama: you can easily convert this "flipped" one to the other, but IMO not vice versa because the "unflipped" way requires some way of counting stuff.
19:21:21 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
19:21:24 qbt joins (~edun@user/edun)
19:21:40 <dminuoso> [exa]: This one doesnt work for infinite lists. :(
19:22:28 cheater1__ joins (~Username@user/cheater)
19:22:32 favonia joins (~favonia@user/favonia)
19:22:35 <burnsidesLlama> irc question, how do you reference someone's name like you two have been doing?
19:22:38 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
19:22:41 cheater1__ is now known as cheater
19:22:54 <zzz> burnsidesLlama: depends on your client, most have autocomplete
19:22:59 <EvanR> i type the first few letters and hit tab
19:23:14 <burnsidesLlama> EvanR: This works for me :)
19:24:13 <dminuoso> burnsidesLlama: So in simplified terms, GHC employs an optimization called short cut fusion
19:24:39 <dminuoso> As an example, by law it's obvious that `fmap f . fmap g = fmap (f . g)`
19:24:40 × qbt quits (~edun@user/edun) (Client Quit)
19:24:53 <burnsidesLlama> [exa]: I suspect the flipped direction is natural for 'snoc' lists. I think there are four functions of the style of init and tails, which come in two pairs. One pair is natural for cons lists, and one is natural for snoc lists. I think the snoc list ones are 'tails' in increasing length order, and 'inits' in decreasing length order
19:24:54 <dminuoso> The latter generally performs better, because it avoids the intermediate data structure
19:25:12 × MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 255 seconds)
19:25:38 <dminuoso> And short cut fusion gives GHC a way of avoiding intermediate data structures behind the scenes.
19:25:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
19:26:10 <burnsidesLlama> dminuoso: So GHC automatically applies fusion laws of various kinds for optimisation (e.g. fold fusion, the map fusion you just mentioned)?
19:27:12 <dminuoso> It only does so under particular circumstances
19:27:28 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
19:27:57 <dminuoso> A particular example is that sum [0...10] does not actually require a list data type in the first place.
19:28:33 <dminuoso> For that to work, the list has to be constructed specially in a way that this fusion can fire
19:28:46 cfricke joins (~cfricke@user/cfricke)
19:29:04 <dminuoso> It roughly works like this:
19:29:10 qbt joins (~edun@user/edun)
19:29:18 <dminuoso> build :: forall a . (forall b . (a -> b -> b) -> b -> b) -> [a]
19:29:56 <dminuoso> This is a way to construct lists, if you notice closely, it's a sort of "turned around foldr"
19:29:58 <dminuoso> % :t foldr
19:29:59 <yahb> dminuoso: forall {t :: * -> *} {a} {b}. Foldable t => (a -> b -> b) -> b -> t a -> b
19:30:34 <dminuoso> So GHC comes with special rewrite rules, that if you foldr right after build, they cancel each other out - and you dont have any intermedaite cons cells
19:30:52 × koolazer quits (~koo@user/koolazer) (Ping timeout: 272 seconds)
19:30:58 × qbt quits (~edun@user/edun) (Client Quit)
19:31:24 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 252 seconds)
19:31:49 <dminuoso> Instead what you end up with is just a loop
19:33:22 qbt joins (~edun@user/edun)
19:34:50 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
19:35:01 cheater joins (~Username@user/cheater)
19:35:24 × qbt quits (~edun@user/edun) (Client Quit)
19:36:50 <burnsidesLlama> dminuoso: I don't understand the type signature of build. Why is it not build :: ((a -> [a] -> [a]) -> [a] -> [a]) -> [a]? What are the foralls doing?
19:37:09 × alinab_ quits (sid468903@id-468903.brockwell.irccloud.com) ()
19:37:21 alinab_ joins (sid468903@id-468903.brockwell.irccloud.com)
19:37:43 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
19:37:50 <dminuoso> build g = g (:) []
19:37:51 alinab_ is now known as alinab
19:37:57 qbt joins (~edun@user/edun)
19:38:25 <burnsidesLlama> Related question, how does build build lists? E.g. how might we write sum using build and fold?
19:41:05 burnside_ joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
19:41:05 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Read error: Connection reset by peer)
19:41:38 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
19:41:38 <burnsidesLlama> https://wiki.haskell.org/Correctness_of_short_cut_fusion seems like it has the answers for my fusion related questions. Thanks :)
19:41:38 × burnside_ quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Read error: Connection reset by peer)
19:42:12 × qbt quits (~edun@user/edun) (Ping timeout: 245 seconds)
19:42:47 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:42:48 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Read error: Connection reset by peer)
19:42:54 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
19:43:01 P1RATEZ joins (piratez@user/p1ratez)
19:43:33 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:43:52 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:44:01 × eight quits (~eight@user/eight) (Quit: leaving)
19:44:58 <dminuoso> burnsidesLlama: Try and understand how this works:
19:45:04 <dminuoso> % foldr (:) [] [1,2,3]
19:45:05 <yahb> dminuoso: [1,2,3]
19:45:12 <dminuoso> If you do, you should be able to grok `build`
19:45:43 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds)
19:45:44 <dminuoso> (The key idea is simply, that a list can be thought of as an arbitrary fold with (:) and [] plucked in)
19:46:25 qbt joins (~edun@user/edun)
19:46:30 <burnsidesLlama> Yes, we are replacing the (:) and [] in a list expression with (:) and [] respectively
19:46:54 <dminuoso> Sure, and now imagine it doesnt even matter whether the original is a list or not.
19:47:25 <dminuoso> Could be a tree for all we know
19:48:12 Guest9 joins (~Guest9@43.250.157.35)
19:48:15 <dminuoso> let x = \f z -> foldr f z t in ...
19:48:26 <dminuoso> burnsidesLlama: So this is just a foldr partially applied to some structure already
19:48:47 × qbt quits (~edun@user/edun) (Read error: Connection reset by peer)
19:48:56 <dminuoso> And `build` just finalizes such a partially applied foldr by providing (:) and [] to the remaining arguments.
19:49:10 qbt joins (~edun@user/edun)
19:50:07 <burnsidesLlama> in the 'let x = ...' line, do you mean foldr for lists? Or a fold for possibly another kind of ADT
19:50:25 × qbt quits (~edun@user/edun) (Read error: Connection reset by peer)
19:50:25 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Read error: Connection reset by peer)
19:50:41 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
19:50:48 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Read error: Connection reset by peer)
19:51:04 <dminuoso> Maybe this is a red herring, mmm.
19:51:06 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
19:51:41 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
19:51:49 <dminuoso> burnsidesLlama: Could be anything.
19:52:39 cheater1__ joins (~Username@user/cheater)
19:52:47 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
19:52:51 qbt joins (~edun@user/edun)
19:52:52 cheater1__ is now known as cheater
19:53:22 <burnsidesLlama> are you saying we can make lists out of anything using build? this doesn't seem right
19:54:05 × qbt quits (~edun@user/edun) (Client Quit)
19:54:22 qbt joins (~edun@user/edun)
19:54:23 tomsmeding . o O ( https://hackage.haskell.org/package/base-4.14.0.0/docs/src/Data.Foldable.html#toList )
19:54:50 <dminuoso> burnsidesLlama: Let's for the sake of simplicity say it has to be a foldable at least.
19:55:16 <dminuoso> Or.. no. This really is a red herring
19:55:25 <burnsidesLlama> I'm not familiar with foldable, could we be even more concrete? E.g. by taking a binary tree type
19:56:36 <dminuoso> burnsidesLlama: The idea is roughly the same as church encoding a list. A list can be fully characterized by its fold.
19:56:42 <dminuoso> (its right fold)
19:57:03 <dminuoso> % :t foldr
19:57:03 <yahb> dminuoso: forall {t :: * -> *} {a} {b}. Foldable t => (a -> b -> b) -> b -> t a -> b
19:57:38 <dminuoso> burnsidesLlama: One way to understand Foldable, is that Foldable is anything that you can turn into a list.
19:57:51 dunj3 joins (~dunj3@2001:16b8:30fc:7f00:fd96:42cd:9d60:7ae7)
19:58:20 <dminuoso> So if we partially apply foldr in its 3rd argument already to some foldable thing, then the remaining thing fully characterizes the list
19:58:21 <burnsidesLlama> And I imagine a Foldable instance must supply a canonical translation (which is injective?) into a list
19:58:24 <dminuoso> Consider:
19:58:32 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
19:58:37 <dminuoso> % x = \f z -> foldr f z [1,2,3,4,5,6]
19:58:37 <yahb> dminuoso:
19:58:45 <dminuoso> % :t x
19:58:45 <yahb> dminuoso: forall {a} {b}. Num a => (a -> b -> b) -> b -> b
19:58:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:58:51 <dminuoso> Im going to claim that `x` is fully equivalent to [1,2,3,4,5,6]
19:59:11 <dminuoso> burnsidesLlama: Remember that question, we will get to it shortly
19:59:34 <dminuoso> burnsidesLlama: Let's test my claim these things are even isomorphic.
19:59:53 × qbt quits (~edun@user/edun) (Quit: WeeChat 3.2)
20:00:04 <dminuoso> Can we turn `x` back into a proper Haskell list?
20:00:06 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
20:00:12 qbt joins (~edun@user/edun)
20:00:44 <burnsidesLlama> by doing build x
20:00:47 <dminuoso> heh
20:00:50 <dminuoso> Right.
20:00:56 <dminuoso> Or just manually doing `x (:) []`
20:00:58 <dminuoso> % x (:) []
20:00:59 <yahb> dminuoso: [1,2,3,4,5,6]
20:01:41 <dminuoso> 21:58:21 burnsidesLlama | And I imagine a Foldable instance must supply a canonical translation (which is injective?) into a list
20:01:49 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds)
20:02:06 cheater1__ joins (~Username@user/cheater)
20:02:10 lavaman joins (~lavaman@98.38.249.169)
20:02:19 <dminuoso> Yes and no. While strictly speaking we could allow for an instance author to write `toList` (and it would semantically be legit), instead we demand you supply an (equivalent) foldr or foldMap instead.
20:02:22 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
20:02:29 cheater1__ is now known as cheater
20:02:42 <dminuoso> foldr has the same power as toList, but its more flexible
20:03:03 <dminuoso> It's more flexible because you can - should you want - avoid the actual intermediate cons cells in the list
20:03:20 <dminuoso> So here comes the clue:
20:03:32 <dminuoso> `build` turns a foldr-encoded list into a proper list
20:03:36 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 268 seconds)
20:03:54 <dminuoso> and foldr goes from a proper list to something else again
20:04:14 <dminuoso> build is equipped with special fusion rules that essentially say:
20:04:34 <dminuoso> With some luck: foldr k z (build g) = g k z
20:05:14 jumper149 joins (~jumper149@80.240.31.34)
20:05:15 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 255 seconds)
20:05:44 <burnsidesLlama> is it saying: "if we are building a list out of g, only to destroy it, then we can directly compute the result"?
20:05:50 <dminuoso> Yes.
20:05:52 <dminuoso> With some luck.
20:06:17 <dminuoso> You're still at the merci of the inliner and the magic whistles of the GHC simplifier - so there's no actual guarantee.
20:06:32 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
20:06:32 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
20:06:36 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
20:07:05 <burnsidesLlama> that sounds mysterious and/or ominous
20:07:10 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:07:13 <burnsidesLlama> one last question, then i need to go to sleep
20:07:42 <burnsidesLlama> how is this kind of 'deforestation' related to deforesting a function of the form 'fold . unfold'?
20:08:08 juhp joins (~juhp@128.106.188.66)
20:09:25 <dminuoso> burnsidesLlama: https://www.cs.ox.ac.uk/ralf.hinze/publications/IFL10.pdf
20:09:50 ph88^ joins (~ph88@2a02:8109:9e00:2b48:9925:18b1:79f7:f242)
20:10:07 <dminuoso> This optimization I described above is called foldr/build fusion in GHC slang.
20:10:14 <dminuoso> There's an equivalent dual optimizatoin called unfold/destroy
20:11:43 <burnsidesLlama> thank you! :)
20:12:12 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:9925:18b1:79f7:f242) (Ping timeout: 245 seconds)
20:12:23 <dminuoso> % :t unfoldr
20:12:24 <yahb> dminuoso: forall {t} {a}. (t -> Maybe (a, t)) -> t -> [a]
20:12:25 <dminuoso> % :t destroy
20:12:25 <yahb> dminuoso: forall {a} {t1} {t2}. (([a] -> Maybe (a, [a])) -> t1 -> t2) -> t1 -> t2
20:12:48 <dminuoso> % destroy unfoldr [1..5]
20:12:48 <yahb> dminuoso: [1,2,3,4,5]
20:13:14 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
20:13:23 <dminuoso> Please dont ask me why we have foldr/build fusion. I expect other folks to be more knowledgable here.
20:13:28 juhp joins (~juhp@128.106.188.66)
20:13:50 <dminuoso> burnsidesLlama: By the way, as an interesting side note:
20:14:00 <dminuoso> Recall my example of: fmap f . fmap g = fmap (f . g) ?
20:14:29 <dminuoso> It would be nice if GHC could observe this law, and always transform the former into the latter. But it cant, GHC is not even aware of any class laws.
20:14:37 <dminuoso> (It wouldn't even know if they are satisfied)
20:15:11 <dminuoso> However, there's tricks to tie GHCs hands and gain this optimization in a guaranteed manner
20:18:02 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 245 seconds)
20:18:24 × Guest9 quits (~Guest9@43.250.157.35) (Quit: Connection closed)
20:19:03 <burnsidesLlama> Making GHC aware of class laws seems like something type-level programming can address. I can't think of how exactly yet. It is like embedding a proof assistant able to work with user-defined axioms into the compiler.
20:19:25 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer)
20:19:42 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
20:19:49 Atum__ joins (IRC@user/atum/x-2392232)
20:19:50 <Hecate> burnsidesLlama: LiquidHaskell
20:19:56 <Hecate> (I think?)
20:20:09 <dminuoso> burnsidesLlama: Well, we can get away with something far more trivial in Haskell
20:20:17 <Hecate> Ryan Scott wrote a paper about it as well
20:20:50 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
20:21:03 <dminuoso> % newtype F f a = F { runF :: forall b. (a -> b) -> f b }
20:21:04 <yahb> dminuoso:
20:21:05 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:21:50 <dminuoso> burnsidesLlama: ^- here. This is just a newtype wrapper where we represent a functor as partially applied to fmap, sort of how the argument to `build` is a foldr partially applied to something list like.
20:22:11 × Atum_ quits (IRC@user/atum/x-2392232) (Ping timeout: 265 seconds)
20:22:15 <dminuoso> % someList = F (`fmap` [1,2,3,4,5])
20:22:15 <yahb> dminuoso:
20:22:43 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
20:22:44 <dminuoso> % instance Functor (F f) where fmap f m = F (\k -> runF m (k . f))
20:22:44 <yahb> dminuoso:
20:22:49 cheater1__ joins (~Username@user/cheater)
20:22:52 cheater1__ is now known as cheater
20:23:43 <dminuoso> Here. So we can turn say a list into this `F` representation, then do a bunch of `fmap f . fmap g . fmap h . fmap i . fmap j` on it, and then go back again - and tadaa - its fused.
20:23:51 <dminuoso> It will go over the list only once
20:24:47 <tomsmeding> because the actual 'fmap' on the list is only executed once: when the original function (`fmap` [1,2,3,4,5]) is executed; all the other fmaps translate to function composition, of which ghc does know that it can fuse
20:24:52 ptrcmd joins (~ptrcmd@user/ptrcmd)
20:25:45 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
20:25:58 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
20:26:33 <dminuoso> % lowerF (F f) = f id
20:26:33 <yahb> dminuoso:
20:26:40 <dminuoso> % lowerF . fmap (+1) . fmap (*20) . fmap (/5) $ someList
20:26:40 <yahb> dminuoso: [5.0,9.0,13.0,17.0,21.0]
20:28:12 <dminuoso> We can then also write ourselves some:
20:28:36 <dminuoso> % liftF a = F (`fmap` a)
20:28:36 <yahb> dminuoso:
20:28:41 <burnsidesLlama> in the definition of F, is runF missing an argument? the call in the instance declaration to runF m (k . f) seems to need two arguments rather than one
20:28:47 <dminuoso> % lowerF . fmap (+1) . fmap (*20) . fmap (/5) .liftF $ [1,2,3,4,5,6]
20:28:47 <yahb> dminuoso: [5.0,9.0,13.0,17.0,21.0,25.0]
20:29:05 <dminuoso> Then all we have to do is wrap this large fmap composition between `lowerF` and `liftF`, and we get fusion for free.
20:29:23 <dminuoso> Nothing else even knows about this F representation! At runtime its even gone because its a newtype
20:29:51 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
20:29:54 <dminuoso> burnsidesLlama: No. This is field-syntax for newtype
20:29:59 <dminuoso> % :t runF
20:29:59 <yahb> dminuoso: forall {f :: * -> *} {a}. F f a -> forall b. (a -> b) -> f b
20:30:27 beka joins (~beka@104.193.170-244.PUBLIC.monkeybrains.net)
20:30:52 <tomsmeding> 'runF m' is the field, which has type (forall b. (a -> b) -> f b), of the record m
20:31:00 <dminuoso> Correkt
20:33:12 <burnsidesLlama> I'll need time to digest what's been said :), bye for now.
20:33:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
20:33:12 × amirouche quits (~amirouche@user/amirouche) (Read error: Connection reset by peer)
20:34:29 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Quit: -)
20:34:42 smichel17 is now known as smichel
20:36:18 chexum joins (~chexum@gateway/tor-sasl/chexum)
20:37:40 analognoise joins (~analognoi@83.136.182.93)
20:38:02 × cheater quits (~Username@user/cheater) (Ping timeout: 245 seconds)
20:38:25 cheater joins (~Username@user/cheater)
20:38:33 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
20:38:44 Guest239 joins (~Guest23@50.47.115.102)
20:38:55 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
20:38:58 favonia joins (~favonia@user/favonia)
20:39:21 amirouche joins (~amirouche@user/amirouche)
20:39:41 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Remote host closed the connection)
20:40:07 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
20:44:09 <Guest239> Does anyone know how to make autocompletion and automatic refactoring to work for Haskell in Spacemacs?
20:44:55 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
20:45:03 Topsi joins (~Tobias@dyndsl-095-033-020-123.ewe-ip-backbone.de)
20:46:16 × beka quits (~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 246 seconds)
20:47:03 smichel is now known as smichel17
20:47:28 × silverwhitefish quits (~hidden@47.202.102.10) (Quit: One for all, all for One (2 Corinthians 5))
20:48:54 × MidAutumnMoon9 quits (~MidAutumn@user/midautumnmoon) (Ping timeout: 255 seconds)
20:49:14 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 268 seconds)
20:50:35 jess joins (~jess@libera/staff/jess)
20:50:54 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
20:51:50 × jippiedoe quits (~david@77-171-152-62.fixed.kpn.net) (Quit: Leaving)
20:51:53 jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net)
20:52:09 <Guest239> In spacemacs the Haskell layer is able to suggest refactorings but is unable to apply them with SPC m r r. How can I fix this?
20:56:01 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
20:56:05 cheater1__ joins (~Username@user/cheater)
20:56:08 cheater1__ is now known as cheater
20:56:20 MidAutumnMoon9 joins (~MidAutumn@user/midautumnmoon)
20:58:32 × ph88^ quits (~ph88@2a02:8109:9e00:2b48:9925:18b1:79f7:f242) (Ping timeout: 255 seconds)
21:01:10 DNH joins (~DNH@2a02:8108:1100:16d8:4c45:cc63:abad:ed54)
21:01:12 × DNH quits (~DNH@2a02:8108:1100:16d8:4c45:cc63:abad:ed54) (Client Quit)
21:01:20 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
21:03:42 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
21:04:14 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
21:04:34 cheater joins (~Username@user/cheater)
21:05:15 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:05:51 spruit11_ joins (~quassel@2a02:a467:ccd6:1:4852:6669:da0c:37fe)
21:06:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:09:20 × spruit11 quits (~quassel@2a02:a467:ccd6:1:f403:cf1e:97b5:1c9b) (Ping timeout: 255 seconds)
21:10:32 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
21:11:03 zebrag joins (~chris@user/zebrag)
21:11:34 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:11:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
21:13:12 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:13:37 Atum_ joins (IRC@user/atum/x-2392232)
21:15:21 × smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Ping timeout: 265 seconds)
21:15:23 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Remote host closed the connection)
21:15:27 × zebrag quits (~chris@user/zebrag) (Ping timeout: 255 seconds)
21:15:52 burnsidesLlama joins (~burnsides@dhcp168-025.wadham.ox.ac.uk)
21:16:38 × Atum__ quits (IRC@user/atum/x-2392232) (Ping timeout: 272 seconds)
21:16:47 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 245 seconds)
21:17:34 zebrag joins (~chris@user/zebrag)
21:17:38 × zebrag quits (~chris@user/zebrag) (Client Quit)
21:18:01 zebrag joins (~chris@user/zebrag)
21:19:09 koolazer joins (~koo@user/koolazer)
21:20:16 silverwhitefish joins (~hidden@47.202.102.10)
21:20:30 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
21:20:41 × burnsidesLlama quits (~burnsides@dhcp168-025.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
21:20:58 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
21:21:49 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
21:22:41 geekosaur joins (~geekosaur@xmonad/geekosaur)
21:29:51 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 265 seconds)
21:32:17 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 255 seconds)
21:33:11 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 255 seconds)
21:36:57 agua joins (~agua@2804:14c:8793:8e2f:d158:60e:567f:c699)
21:40:39 × pesada quits (~agua@2804:18:4f:750a:1:0:192e:7017) (Ping timeout: 255 seconds)
21:41:24 acidjnk_new3 joins (~acidjnk@p200300d0c72b9516b9158842f1cb7e92.dip0.t-ipconnect.de)
21:42:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:45:36 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
21:45:45 cheater joins (~Username@user/cheater)
21:46:21 cfricke joins (~cfricke@user/cfricke)
21:47:15 × dunj3 quits (~dunj3@2001:16b8:30fc:7f00:fd96:42cd:9d60:7ae7) (Remote host closed the connection)
21:47:39 Franciman joins (~francesco@openglass.it)
21:47:53 <Franciman> Hi all, if I want to learn about ghc internals
21:48:00 <Franciman> do you know a good source?
21:48:08 <maerwald> Franciman: ghc devs
21:48:20 <Franciman> hi maerwald
21:48:21 <Franciman> thanks
21:49:04 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
21:50:02 <geekosaur> there's some decent docs on the ghc wiki https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/#the-ghc-commentary
21:53:42 lbseale joins (~lbseale@user/ep1ctetus)
21:54:25 <Franciman> ty
21:58:02 × mei quits (~mei@user/mei) (Read error: Connection reset by peer)
22:02:12 <lbseale> I'm trying to write generics for the first time, and I'm stuck on trying to get the name of a record field, here is my code and error message: https://paste.tomsmeding.com/u3dLcpZN ... I don't understand how to use selName
22:02:37 × ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
22:03:08 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:03:57 benin0369 joins (~benin@183.82.176.17)
22:05:42 × Topsi quits (~Tobias@dyndsl-095-033-020-123.ewe-ip-backbone.de) (Ping timeout: 268 seconds)
22:06:55 pavonia joins (~user@user/siracusa)
22:14:24 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
22:14:38 cheater joins (~Username@user/cheater)
22:14:57 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
22:15:11 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
22:17:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
22:18:25 <EvanR> lbseale: it may be s vs s0 in the error message indicates it doesn't know you're talking about the same s
22:19:09 <lbseale> EvanR yeah that's my theory as well, so how do I get it to know about s ?
22:19:21 <EvanR> when you use s below, that's a "new" s. You can get the original s in scope using ScopedTypeVars and forall in the type signature
22:19:32 <lbseale> aHA
22:19:37 finsternis joins (~X@23.226.237.192)
22:20:18 <lbseale> that fixed it! thanks so much
22:20:22 <EvanR> nice
22:23:06 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
22:24:13 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
22:29:47 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
22:30:41 ph88^ joins (~ph88@2a02:8109:9e00:7e5c:9925:18b1:79f7:f242)
22:30:43 × cheater quits (~Username@user/cheater) (Ping timeout: 258 seconds)
22:31:14 cheater joins (~Username@user/cheater)
22:33:38 × lbseale quits (~lbseale@user/ep1ctetus) (Quit: Client closed)
22:34:54 lbseale joins (~lbseale@user/ep1ctetus)
22:43:38 lavaman joins (~lavaman@98.38.249.169)
22:44:06 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 255 seconds)
22:44:11 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
22:44:30 zebrag joins (~chris@user/zebrag)
22:45:57 × Guest239 quits (~Guest23@50.47.115.102) (Quit: Client closed)
22:46:28 × Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_)
22:46:32 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 255 seconds)
22:46:48 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
22:48:09 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
22:48:26 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
22:48:57 × fendor quits (~fendor@77.119.210.250.wireless.dyn.drei.com) (Remote host closed the connection)
22:49:21 pesada joins (~agua@2804:18:4f:750a:1:0:192e:7017)
22:49:47 × justache quits (~justache@user/justache) (Excess Flood)
22:50:32 justache joins (~justache@user/justache)
22:51:47 × agua quits (~agua@2804:14c:8793:8e2f:d158:60e:567f:c699) (Ping timeout: 245 seconds)
22:52:01 cheater1__ joins (~Username@user/cheater)
22:52:16 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
22:52:16 Atum_ joins (IRC@user/atum/x-2392232)
22:52:24 cheater1__ is now known as cheater
22:53:54 favonia joins (~favonia@user/favonia)
22:53:57 × chomwitt quits (~Pitsikoko@ppp-94-67-202-202.home.otenet.gr) (Remote host closed the connection)
22:54:05 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
22:55:19 PungentCheese joins (~PungentCh@x527179fa.dyn.telefonica.de)
22:56:19 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:59:54 × Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_)
23:13:01 agua joins (~agua@2804:14c:8793:8e2f:d158:60e:567f:c699)
23:16:46 × pesada quits (~agua@2804:18:4f:750a:1:0:192e:7017) (Ping timeout: 246 seconds)
23:19:06 × favonia quits (~favonia@user/favonia) (Remote host closed the connection)
23:19:56 favonia joins (~favonia@user/favonia)
23:20:41 ubikium joins (~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
23:22:29 dajoer joins (~david@user/gvx)
23:27:13 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
23:27:31 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
23:28:19 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9516b9158842f1cb7e92.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
23:30:02 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Remote host closed the connection)
23:30:26 chexum joins (~chexum@gateway/tor-sasl/chexum)
23:36:29 <lechner> Hi, should a cabal project be able to 'import' local files in the same folder?
23:38:57 × Solarion quits (~solarion@mail.digitasaru.net) (Remote host closed the connection)
23:39:33 <sclv> what on earth do you mean?
23:39:52 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 246 seconds)
23:40:10 <pavonia> You can import non-exposed modules, if you mean that
23:40:17 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
23:40:28 <lechner> search path, except with cabal: https://stackoverflow.com/questions/30327770/add-local-files-to-haskell-libraries-search-path
23:40:34 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 246 seconds)
23:41:18 <lechner> do i have to specify -i in my .cabal?
23:41:50 <monochrom> Uh, manual control of -i is best done when using GHC directly without cabal.
23:42:18 <monochrom> You know, you would do yourself a great service if you set your DNS (say) to block stackoverflow.
23:42:19 <lechner> can cabal find it another way?
23:42:46 <monochrom> Because I have had students who consult stackoverflow for answering my questions and they were dead wrong.
23:43:04 <sclv> search path for modules?
23:43:11 <sclv> like for haskell files?
23:43:22 <sclv> you can set that in the cabal file itself
23:43:36 <lechner> just splitting my sources. json generics to be exact
23:43:45 <monochrom> There is a way to tell cabal to honour local code but the local code needs also to be in cabalized package form.
23:43:51 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
23:43:59 <monochrom> For more details please read the cabal user guide.
23:44:24 <monochrom> Or if you can find a blog that quickstarts you that's cool, but I pretty much doubt blogger quality too.
23:45:31 <lechner> other-modules? https://cabal.readthedocs.io/en/3.4/developing-packages.html#modules-included-in-the-package
23:48:27 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 255 seconds)
23:49:43 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds)
23:50:15 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
23:50:36 cheater joins (~Username@user/cheater)
23:51:14 pesada joins (~agua@2804:18:4f:750a:1:0:192e:7017)
23:52:41 chexum joins (~chexum@gateway/tor-sasl/chexum)
23:53:00 × agua quits (~agua@2804:14c:8793:8e2f:d158:60e:567f:c699) (Read error: Connection reset by peer)
23:53:04 Core6260 joins (~agua@2804:14c:8793:8e2f:d158:60e:567f:c699)
23:53:46 Null_A joins (~null_a@2601:645:8700:2290:3dcd:98af:2801:58da)
23:54:10 Erutuon joins (~Erutuon@user/erutuon)
23:54:20 × spruit11_ quits (~quassel@2a02:a467:ccd6:1:4852:6669:da0c:37fe) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
23:54:37 spruit11 joins (~quassel@2a02:a467:ccd6:1:4852:6669:da0c:37fe)
23:55:50 × pesada quits (~agua@2804:18:4f:750a:1:0:192e:7017) (Ping timeout: 255 seconds)
23:57:38 × Core6260 quits (~agua@2804:14c:8793:8e2f:d158:60e:567f:c699) (Ping timeout: 255 seconds)

All times are in UTC on 2021-07-14.