Home liberachat/#haskell: Logs Calendar

Logs on 2022-01-09 (liberachat/#haskell)

00:02:06 SummerSonw joins (~The_viole@203.77.49.232)
00:04:30 tremon joins (~tremon@217-120-53-183.cable.dynamic.v4.ziggo.nl)
00:05:18 talismanick joins (~talismani@2601:644:8500:8350::256c)
00:08:20 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:08:20 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:08:20 wroathe joins (~wroathe@user/wroathe)
00:09:34 × max22- quits (~maxime@2a01cb08833598001e8492dc42f658f2.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
00:11:25 × SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 240 seconds)
00:12:51 jakalx parts (~jakalx@base.jakalx.net) ()
00:12:52 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
00:15:35 × jgeerds quits (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 256 seconds)
00:17:22 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection)
00:18:51 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
00:20:09 jakalx joins (~jakalx@base.jakalx.net)
00:23:01 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
00:28:15 × euandreh quits (~euandreh@2804:14c:33:9fe5:58c5:6207:2988:1b06) (Ping timeout: 268 seconds)
00:29:09 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
00:31:59 × tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving)
00:34:24 DNH_ joins (~DNH@2a02:8108:1100:16d8:c018:4e56:978b:50e2)
00:35:05 × acidjnk_new3 quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
00:35:05 × acidjnk quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
00:35:09 × DNH_ quits (~DNH@2a02:8108:1100:16d8:c018:4e56:978b:50e2) (Client Quit)
00:35:50 tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
00:36:53 × DNH quits (~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4) (Ping timeout: 268 seconds)
00:40:37 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
00:41:48 × Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
00:45:57 lavaman joins (~lavaman@98.38.249.169)
00:46:45 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
00:46:54 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
00:48:52 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:48:52 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:48:52 wroathe joins (~wroathe@user/wroathe)
00:50:13 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
00:50:52 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
00:50:53 pavonia joins (~user@user/siracusa)
00:53:17 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
01:01:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:05:44 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
01:12:18 Sgeo_ joins (~Sgeo@user/sgeo)
01:13:07 <lechner> Hi, is it possible to extend Hasql (or perhaps PostgreSQL.Binary.Encoding) with a data type from an extension?
01:14:40 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 256 seconds)
01:21:37 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
01:29:36 lbseale joins (~ep1ctetus@user/ep1ctetus)
01:35:49 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Ping timeout: 240 seconds)
01:37:49 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
01:37:57 × son0p quits (~ff@181.136.122.143) (Ping timeout: 268 seconds)
01:50:47 × kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
01:53:56 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
01:55:37 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
01:57:39 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
02:02:09 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
02:02:28 × little_mac quits (~little_ma@2601:410:4300:3ce0:b17c:f0c6:752d:8263) (Remote host closed the connection)
02:03:02 little_mac joins (~little_ma@2601:410:4300:3ce0:b17c:f0c6:752d:8263)
02:03:19 SummerSonw joins (~The_viole@203.77.49.232)
02:04:12 vysn joins (~vysn@user/vysn)
02:05:06 × justIrresolute quits (~justache@user/justache) (Remote host closed the connection)
02:06:01 TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com)
02:06:05 justIrresolute joins (~justache@user/justache)
02:06:48 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
02:11:02 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection)
02:11:25 TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com)
02:14:40 califax- joins (~califax@user/califx)
02:15:11 lavaman joins (~lavaman@98.38.249.169)
02:18:24 × califax quits (~califax@user/califx) (Ping timeout: 276 seconds)
02:18:24 califax- is now known as califax
02:19:32 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
02:21:01 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
02:21:08 kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
02:28:11 × mixfix41 quits (~homefame@user/mixfix41) (Ping timeout: 256 seconds)
02:28:55 machinedgod joins (~machinedg@24.105.81.50)
02:29:25 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
02:29:36 neurocyte09172 joins (~neurocyte@IP-094016064252.dynamic.medianet-world.de)
02:29:36 × neurocyte09172 quits (~neurocyte@IP-094016064252.dynamic.medianet-world.de) (Changing host)
02:29:36 neurocyte09172 joins (~neurocyte@user/neurocyte)
02:31:11 <lechner> Hi, is 'pure' a suitable no-op in a monadic 'case' expression? Sorry if that language makes no sense
02:31:25 × neurocyte0917 quits (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
02:31:25 neurocyte09172 is now known as neurocyte0917
02:33:25 × xff0x quits (~xff0x@2001:1a81:5298:9f00:374f:4390:4780:3d6) (Ping timeout: 240 seconds)
02:35:34 xff0x joins (~xff0x@2001:1a81:52d4:9900:80b8:248c:472c:34e)
02:38:48 <monochrom> Yes, especially "pure ()"
02:40:04 <lechner> monochrom: thanks!
02:40:27 <lechner> what should go near the 'Right' please? https://paste.tomsmeding.com/vx0y49YN
02:41:08 <lechner> a is ()
02:43:23 <monochrom> Go back one step. "Session.run (addVersionSession version committish tags) connection >>= \e -> case e of Left error -> ... Right _ -> ...". Or use do-notation.
02:43:43 <monochrom> You have "IO (EIther ...)" not plain "Either ...".
02:44:58 razetime joins (~quassel@49.207.213.63)
02:53:49 × Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Ping timeout: 240 seconds)
02:55:12 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Quit: Leaving)
02:56:30 × ph88 quits (~ph88@2a02:8109:9e00:71d0::7e04) (Quit: Leaving)
02:56:31 TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com)
02:56:56 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
02:58:38 <lechner> oh, i see. it went back in the monad when i moved it from Right error <- (which caused a missed match on success)
03:01:37 <lechner> how does that look with 'do' please?
03:03:15 <lechner> i think my issue is simply that i want to do nothing on Right _
03:05:05 × justIrresolute quits (~justache@user/justache) (Remote host closed the connection)
03:05:37 <lechner> Why doesn't that work? Right _ -> pure () I get Couldn't match expected type ‘IO (Either Session.QueryError ())’ like you said
03:06:04 justIrresolute joins (~justache@user/justache)
03:09:07 <EvanR> expected IO (Either ...
03:09:22 <EvanR> so like, return (Right (...
03:09:35 <EvanR> or pure (pure (...
03:11:34 sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca)
03:16:13 × dsrt^ quits (~dsrt@wsip-98-188-246-242.mc.at.cox.net) (Ping timeout: 240 seconds)
03:18:47 <lechner> i think i tried all combinations...
03:18:57 × little_mac quits (~little_ma@2601:410:4300:3ce0:b17c:f0c6:752d:8263) (Ping timeout: 240 seconds)
03:20:29 little_mac joins (~little_ma@c-24-127-188-93.hsd1.mi.comcast.net)
03:21:10 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
03:22:38 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
03:23:13 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
03:27:07 × shailangsa quits (~shailangs@host86-162-150-202.range86-162.btcentralplus.com) (Ping timeout: 256 seconds)
03:29:23 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
03:30:46 Topsi joins (~Tobias@dyndsl-095-033-089-163.ewe-ip-backbone.de)
03:31:22 Hash joins (~Hash@hashsecurity.org)
03:31:24 <Hash> Hello
03:31:30 <Hash> I'm new but have questiona bout Haskell GHC
03:31:41 <Hash> I install it on Ubuntu 20.04 and it's very large size.
03:31:50 <Hash> Almost 1GB of packages for haskell
03:31:53 <xsperry> are you sure you want to return Either wrapped in an IO? so many things can raise exception in IO, so if you return Either (as opposed to throwing) you just have one more type of error to handle
03:31:56 <Hash> Is this accurate?
03:32:16 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
03:32:26 <Hash> Is there possible way to get Haskell compiiler/xmonad without having 1GB of ghc dependencies?
03:32:34 <Hash> Why is haskell compiler so huge?
03:32:56 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
03:33:36 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
03:33:43 <sonny> maybe it's possible to install only ghc
03:34:43 <Topsi> ummm, for me on Windows the size of the folder at C:\Users\Username\AppData\Local\Programs\stack\x86_64-windows\ghc-9.0.1 is 2,5GB
03:35:15 <EvanR> Hash, I'm on ubuntu
03:35:24 <EvanR> I used ghcup to get haskell, not packages
03:35:38 <yushyin> 4.8G /home/yushyin/.ghcup/ ;D
03:35:56 <Hash> holy moly
03:35:57 <EvanR> yeah can't speak to the disk foot print, I have a new 1TB drive
03:36:14 <EvanR> needless to say that's a lot of 1.44MB floppies
03:36:14 <Hash> That's so much :(
03:36:50 <xsperry> 1TB hdd is like $30
03:37:07 <Topsi> I have ghc-8.6.5, ghc-8.8.2, ghc-8.8.3, ghc-8.8.4, ghc-8.10.1, ghc-8.10.2, ghc-8.10.4 and ghc-9.0.1 installed and my SSD is only 227GB -.-
03:37:30 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
03:37:41 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
03:37:57 <Topsi> ye I have external hdds as well, but they're slower
03:38:19 <EvanR> Hash, GHC is alien tech, sorry
03:38:50 <Topsi> I just want to express that I find GHCs size inconvenient
03:38:56 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
03:39:22 <EvanR> the real issue seems to be how much memory it takes to run, which becomes an issue on raspberry pi
03:40:08 <Topsi> that too x)
03:40:23 <lechner> xsperry: i don't want to return anything. just trying to process the error https://paste.tomsmeding.com/vx0y49YN
03:41:19 <EvanR> lechner, all functions return something, be it (), Nothing, or an exploding thunk
03:41:28 <EvanR> or a hard freeze
03:42:00 <xsperry> lechner, can you paste a test case? (smallest compilable example). "putStrLn $ show error" is the same as "print error", btw
03:43:56 <xsperry> lechner, nm, Session.run returns IO, you can't use case with IO
03:44:16 × Hayek1 quits (~xxx@rrcs-173-196-3-254.west.biz.rr.com) (Ping timeout: 256 seconds)
03:44:35 <lechner> xsperry: just trying to process the error from 'run' here and do nothing on 'Right' https://hackage.haskell.org/package/hasql-1.4.4/docs/Hasql-Session.html#t:QueryError
03:44:50 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
03:45:01 × td_ quits (~td@94.134.91.205) (Ping timeout: 240 seconds)
03:45:32 <lechner> could i use eitherResult <- .... followed by case eitherResult of .....
03:45:33 <yushyin> Hash: if that's too much, haskell might be not for you. i have already >10GB in haskell deps
03:45:39 <Hash> HJeezus!
03:45:41 <Hash> Wow
03:45:54 kramer2 joins (~bc8147f2@cerf.good1.com)
03:46:11 <xsperry> lechner yes that should work
03:46:13 <EvanR> 10G, that's like 1/10 or 1/20 of a basic video game now xD
03:47:05 td_ joins (~td@muedsl-82-207-238-021.citykom.de)
03:47:19 <EvanR> :t case Left "!" of Right _ -> return (); Left _ -> return ()
03:47:20 <lambdabot> Monad m => m ()
03:47:31 <EvanR> lechner, maybe eitherResult is not what you think it is
03:47:37 <lechner> xsperry: is there something monadic lke Session.run ... >>= similar to what monochrome wrote?
03:48:10 <Topsi> right, the haskell dependencies downloaded by stack stored in C:\sr are 24GB for me
03:48:23 <Hash> Wow
03:48:25 <lechner> EvanR: i have some type confusion
03:48:27 <Hash> that's just so much.
03:48:36 <xsperry> lechner, do and <- are just syntax sugar for >>=
03:48:39 <Hash> I don't have that kind of space. I use Xmonad only
03:49:39 × sonny quits (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Remote host closed the connection)
03:50:17 <Topsi> It accumulates over time
03:50:17 × sagax quits (~sagax_nb@user/sagax) (Ping timeout: 240 seconds)
03:50:54 <EvanR> you can always clear the accumulate ghc stuf
03:50:59 <kramer2> lecher, what error are you getting?
03:51:00 <Topsi> There's no proper way to delete stuff. I either delete the GHCs installed by stack manually or remove the C:\sr folder by reinstalling stack every now and then.
03:51:10 <Topsi> i don't know how else to do it
03:51:17 <EvanR> as usual on linux, the proper way is to delete the relevant directory
03:51:23 <EvanR> and start over
03:51:37 <yushyin> Hash: that said, if you use xmonad, you will need a ghc and yes it will take about 1-2GB of your space. well, probably you could compile xmonad on system x and use only the binary on system y, but then you lose the possibility to quickly reconfigure something.
03:51:51 <Hash> Or switch to dwm.
03:51:55 <lechner> kramer2: Couldn't match expected type ‘IO (Either Session.QueryError ())’
03:51:59 <Hash> But miss out the xmonad extention ecosystem
03:52:01 <Hash> :(
03:52:07 <EvanR> I used dwm for many years
03:52:12 <kramer2> lechner, it looks like you are still matching IO, no Either
03:52:17 <EvanR> I'm better now
03:52:20 <kramer2> Hash, I'm curious, what is the size of your hard drive?
03:52:23 <lechner> Hash: or use sway
03:52:29 <Hash> I dunno
03:52:31 <Hash> let's see
03:52:41 <Hash> /dev/sdd2 30G 22G 7.0G 76% /
03:52:46 <Hash> /dev/sdd3 41G 18G 22G 45% /home
03:53:10 <Hash> I just need to reinstall.
03:53:19 <yushyin> Hash: or any other window manager which doesn't require a whole compiler toolchain for some re-configuration
03:53:24 <Hash> over the years you install packages adn forget about them
03:53:29 <Hash> ligbs and dev packs and all
03:54:05 <EvanR> I can't imagine linux without a ghc
03:54:13 <EvanR> how do you even
03:54:16 <lechner> Hash: afaik xmonad will never talk wayland
03:54:23 <Hash> Whoc ares about wayland
03:54:26 <Hash> what is that anyway
03:54:32 <Hash> prometheus movie stuff?
03:54:40 <Hash> wayland. Stupid name.
03:54:57 <kramer2> to be honest, if you're not interested in haskell beyond xmonad, I can understand why needing >1GB of space might raise some eyebrows
03:55:01 <Hash> basic xorg window stuff is good
03:55:13 <Hash> Do you see my space?
03:55:19 <Hash> Not enough man
03:55:21 <Hash> :(
03:55:40 <Hash> Oh well.Oh well
03:55:44 <Hash> oh well it's what it is.
03:55:47 <EvanR> you'll have to delete some of your MP3s to make room for haskell
03:55:53 <EvanR> or bootlegs, or whatever
03:55:54 <Hash> No this is just / and /home
03:56:39 <lechner> or http://www.nongnu.org/ratpoison/
03:56:55 <Hash> I have /media and /jorel and /kalel and /valel /zorel
03:57:03 <Hash> That's where my data is.
03:57:15 <Hash> I'm talking about stupid distro packagsges
04:01:07 yauhsien_ joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
04:01:07 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
04:05:05 × justIrresolute quits (~justache@user/justache) (Remote host closed the connection)
04:06:03 justIrresolute joins (~justache@user/justache)
04:09:37 shailangsa joins (~shailangs@host86-185-98-37.range86-185.btcentralplus.com)
04:09:44 <EvanR> with ghcup you can sidestep stupid distro packages
04:12:02 sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca)
04:18:07 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
04:23:12 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds)
04:25:02 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
04:31:57 Jing joins (~hedgehog@240e:390:7c53:a7e1:8890:34c2:e4a2:a79e)
04:34:32 <EvanR> Data.List.NonEmpty is cool
04:34:46 <EvanR> I don't hate it
04:46:40 deadmarshal joins (~deadmarsh@95.38.231.124)
04:46:54 Deep-Thought joins (~quantum@2001:8003:7937:cf01:485e:bf6c:57df:1e44)
04:47:28 Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
04:49:39 Deep-Thought parts (~quantum@2001:8003:7937:cf01:485e:bf6c:57df:1e44) (Leaving)
04:52:07 seer joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
04:52:16 × waleee quits (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
04:52:41 <seer> question about custom preludes: which one should I use?
04:52:43 seer is now known as Inst
04:54:23 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
04:55:57 sonny parts (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) ()
04:57:31 <EvanR> none of them probably, if you're unsure
04:59:34 dsrt^ joins (~dsrt@wsip-98-188-246-242.mc.at.cox.net)
05:02:13 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
05:03:20 kimjetwav joins (~user@2607:fea8:2363:8f00:215b:2bd2:2b33:135e)
05:05:05 × justIrresolute quits (~justache@user/justache) (Remote host closed the connection)
05:05:44 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
05:06:03 justIrresolute joins (~justache@user/justache)
05:06:11 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
05:07:41 Topsi1 joins (~Tobias@dyndsl-095-033-023-075.ewe-ip-backbone.de)
05:09:16 × Topsi quits (~Tobias@dyndsl-095-033-089-163.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
05:17:54 × kitzman quits (~kitzman@user/dekenevs) (Quit: C-x C-c)
05:18:45 kitzman joins (~kitzman@user/dekenevs)
05:21:59 user0 joins (~aj@154.0.137.32)
05:22:06 user0 parts (~aj@154.0.137.32) ()
05:22:19 × Jing quits (~hedgehog@240e:390:7c53:a7e1:8890:34c2:e4a2:a79e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:26:16 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
05:29:54 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:34:21 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
05:34:21 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
05:34:21 wroathe joins (~wroathe@user/wroathe)
05:39:18 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
05:48:59 <EvanR> in client server jargon we have verbs like get (request data, not intending to have any other effect), put (here is some data, good luck. I'm not expecting anything else. fire and forget). But what do you call a request for data, but intend for some other effect. Such as a dequeue, bump a counter, move a pointer, at the same time
05:50:12 <EvanR> like to get the data you had to rip it out, leaving aftermath
05:51:49 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
05:52:07 <EvanR> GetUpdate, SmashAndGrab,
05:53:25 <EvanR> Loot
06:12:35 × deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds)
06:32:05 × aeka quits (~aeka@user/hiruji) (Ping timeout: 268 seconds)
06:32:41 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
06:35:25 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
06:37:30 aeka joins (~aeka@user/hiruji)
06:43:25 × stef204 quits (~stef204@user/stef204) (Ping timeout: 240 seconds)
06:44:54 deadmarshal joins (~deadmarsh@95.38.231.124)
06:49:01 × deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 240 seconds)
06:52:36 × YoungFrog quits (~youngfrog@2a02:a03f:c21b:f900:f484:3278:789d:d6a5) (Remote host closed the connection)
06:52:56 YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
06:53:04 × yauhsien_ quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
06:53:36 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
06:58:21 acidjnk joins (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de)
06:58:22 acidjnk_new3 joins (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de)
07:03:42 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
07:04:13 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
07:04:16 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
07:10:34 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:12:28 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
07:14:19 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
07:14:53 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
07:15:57 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
07:19:53 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:20:25 × mvk quits (~mvk@2607:fea8:5cdd:f000::45db) (Quit: Going elsewhere)
07:20:51 mvk joins (~mvk@2607:fea8:5cdd:f000::45db)
07:24:53 × little_mac quits (~little_ma@c-24-127-188-93.hsd1.mi.comcast.net) (Remote host closed the connection)
07:24:56 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
07:25:31 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
07:25:48 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
07:25:56 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
07:30:24 nhatanh02 joins (~satori@123.24.172.30)
07:33:51 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:35:33 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
07:36:08 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
07:38:02 acidjnk_new joins (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de)
07:38:32 Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr)
07:39:25 Guest49 joins (~Guest49@98.47.16.37)
07:40:09 Guest49 parts (~Guest49@98.47.16.37) ()
07:41:09 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds)
07:41:46 × acidjnk_new3 quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
07:41:46 × acidjnk quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
07:42:16 × Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
07:42:47 acidjnk joins (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de)
07:44:11 xmyst joins (~xmyst@ip5f5ac363.dynamic.kabel-deutschland.de)
07:44:15 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
07:46:11 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
07:46:46 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
07:47:26 × acidjnk quits (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
07:47:26 × acidjnk_new quits (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
07:52:29 <gentauro> Hash: how many partitions do you have? Cos only 40 (ish) GB for home is pretty "small"
07:53:28 <gentauro> I mean, I just had to do some `cloning` of my NVMe cos the `/nix/store` was eating up all my space …
07:53:42 Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
07:53:58 × Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Read error: Connection reset by peer)
07:54:01 gentauro not the easiest task, but I was noting everything and I will probably throw a blogpost about it :)
07:56:48 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
07:57:23 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
07:58:36 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
08:00:31 coolnickname joins (uid531864@user/coolnickname)
08:07:09 deadmarshal joins (~deadmarsh@95.38.231.124)
08:07:25 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
08:08:00 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
08:10:57 × Garbanzo quits (~Garbanzo@2602:304:6eac:dc10::46) (Ping timeout: 240 seconds)
08:10:57 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
08:11:06 vglfr joins (~vglfr@88.155.96.35)
08:13:39 <Hash> gentauro: I'm college student, not many money
08:13:44 <Hash> gentauro: small disk
08:13:58 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:14:01 <Hash> 128gb ssd
08:14:48 <Hash> Yeah.
08:14:52 <Hash> This is weird.
08:14:59 <Hash> I have no idea what I was thinking
08:15:25 <Hash> https://i.imgur.com/ko5BgNn.png
08:15:39 <Hash> I don't know what on sdd4
08:15:45 <Hash> and ... hunh.
08:16:23 <Hash> I could move /var out of / and into a sep partition and mount it.
08:16:48 <Hash> I really just need to ge tmore funds, get more disks, and stuff
08:18:02 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
08:18:37 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
08:21:09 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
08:25:33 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds)
08:28:39 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
08:29:14 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
08:32:13 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
08:32:53 × xmyst quits (~xmyst@ip5f5ac363.dynamic.kabel-deutschland.de) (Quit: Connection closed)
08:32:56 vglfr joins (~vglfr@88.155.96.35)
08:47:52 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:52:40 × coolnickname quits (uid531864@user/coolnickname) ()
08:54:07 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
08:56:09 × kramer2 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
09:00:08 × rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Quit: You have been kicked for being idle)
09:00:08 × TomasJakl[m] quits (~jaklttchn@2001:470:69fc:105::a42) (Quit: You have been kicked for being idle)
09:03:16 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
09:05:05 × justIrresolute quits (~justache@user/justache) (Remote host closed the connection)
09:06:04 justIrresolute joins (~justache@user/justache)
09:06:29 thevishy joins (~Nishant@2405:201:f005:c007:40d9:4255:8f71:3678)
09:07:14 × remexre quits (~remexre@user/remexre) (Remote host closed the connection)
09:07:29 remexre joins (~remexre@user/remexre)
09:10:55 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
09:14:18 max22- joins (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
09:15:30 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds)
09:16:35 notzmv joins (~zmv@user/notzmv)
09:17:36 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
09:17:36 allbery_b joins (~geekosaur@xmonad/geekosaur)
09:17:39 allbery_b is now known as geekosaur
09:34:49 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
09:35:06 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
09:36:43 <[exa]> Hash: what are you trying to achieve? 128GB SSD should be waaaaaaaaaaaaaay more than enough for any haskelling around, unless you like decide to build the whole stackage from scratch or so
09:39:49 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
09:44:28 gehmehgeh joins (~user@user/gehmehgeh)
09:45:38 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
09:48:28 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:53:01 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
09:53:24 × shailangsa quits (~shailangs@host86-185-98-37.range86-185.btcentralplus.com) ()
10:01:07 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
10:01:24 vglfr joins (~vglfr@88.155.96.35)
10:01:26 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
10:01:26 sprout_ joins (~quassel@2a02:a467:ccd6:1:d9b7:23d6:79dd:2e64)
10:04:37 × sprout quits (~quassel@2a02:a467:ccd6:1:48c8:920f:83dd:ae34) (Ping timeout: 240 seconds)
10:05:25 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds)
10:06:48 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
10:12:28 rito_ joins (~rito_gh@45.112.243.206)
10:22:48 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:24:33 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:26:02 × vglfr quits (~vglfr@88.155.96.35) (Ping timeout: 256 seconds)
10:33:07 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
10:33:21 shailangsa joins (~shailangs@host86-185-98-37.range86-185.btcentralplus.com)
10:34:47 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:36:14 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
10:37:33 Lord_of_Life_ is now known as Lord_of_Life
10:46:37 × razetime quits (~quassel@49.207.213.63) (Ping timeout: 240 seconds)
10:49:11 ircs joins (~ircs@2-111-85-72-cable.dk.customer.tdc.net)
10:49:50 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
10:50:08 lavaman joins (~lavaman@98.38.249.169)
10:52:20 × ircs quits (~ircs@2-111-85-72-cable.dk.customer.tdc.net) (Read error: Connection reset by peer)
10:53:57 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds)
10:56:13 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
10:56:52 jakalx parts (~jakalx@base.jakalx.net) ()
11:00:17 jakalx joins (~jakalx@base.jakalx.net)
11:01:28 vglfr joins (~vglfr@88.155.96.35)
11:01:49 × dsrt^ quits (~dsrt@wsip-98-188-246-242.mc.at.cox.net) (Ping timeout: 240 seconds)
11:02:34 dsrt^ joins (~dsrt@wsip-98-188-246-242.mc.at.cox.net)
11:04:04 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:05:59 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
11:12:31 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
11:12:55 vglfr joins (~vglfr@88.155.96.35)
11:15:32 cls joins (~cls@chalk.lubutu.com)
11:16:27 mc47 joins (~mc47@xmonad/TheMC47)
11:19:37 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
11:19:43 × Guest3 quits (~Guest3@88.220.154.34) (Ping timeout: 256 seconds)
11:20:22 <cls> This is a very newbie question, but I'm trying to cabal install ipa for https://hackage.haskell.org/package/ipa-0.3.1.1 and just get "there is no package named 'ipa'". I have run cabal update. Am I doing something wrong?
11:20:23 vglfr joins (~vglfr@88.155.96.35)
11:21:30 × srk quits (~sorki@user/srk) (Remote host closed the connection)
11:21:30 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
11:21:49 srk joins (~sorki@user/srk)
11:22:38 vglfr joins (~vglfr@88.155.96.35)
11:30:17 acidjnk joins (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de)
11:30:17 acidjnk_new joins (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de)
11:31:40 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
11:33:17 zer0bitz joins (~zer0bitz@196.244.192.60)
11:33:27 geekosaur joins (~geekosaur@xmonad/geekosaur)
11:35:20 <geekosaur> seems to work here
11:39:13 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
11:39:25 vglfr joins (~vglfr@88.155.96.35)
11:39:31 <cls> I think the issue was because I had an out of date version of GHC. Very out of date (7.10.3)! I've got a fresh install with GHCup and it seems to be installing now.
11:40:12 <geekosaur> ghc shouldn't affect finding the package. maybe you got a newer cabal with it?
11:40:26 antony joins (~The_viole@203.77.49.232)
11:40:39 <cls> Yes, it came with a new cabal as well
11:41:15 razetime joins (~quassel@49.207.213.63)
11:49:31 jeffz` is now known as jeffz
11:49:31 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
11:49:45 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
11:50:17 vglfr joins (~vglfr@88.155.96.35)
11:50:59 × razetime quits (~quassel@49.207.213.63) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
11:51:36 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
11:52:44 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
11:53:39 vglfr joins (~vglfr@88.155.96.35)
11:55:44 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
11:55:45 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
11:56:13 Jing joins (~hedgehog@240e:390:7c53:a7e1:24aa:cde6:528:d0da)
11:56:54 vglfr joins (~vglfr@88.155.96.35)
12:00:09 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds)
12:03:49 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:04:58 vglfr joins (~vglfr@88.155.96.35)
12:09:15 × x88x88x quits (~x88x88x@149.28.53.172) (Remote host closed the connection)
12:10:06 x88x88x joins (~x88x88x@149.28.53.172)
12:11:35 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
12:12:01 __monty__ joins (~toonn@user/toonn)
12:12:10 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
12:12:39 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:13:28 vglfr joins (~vglfr@88.155.96.35)
12:15:25 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:17:21 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
12:21:03 xkuru joins (~xkuru@user/xkuru)
12:21:04 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:21:15 lavaman joins (~lavaman@98.38.249.169)
12:22:18 vglfr joins (~vglfr@88.155.96.35)
12:22:37 × talismanick quits (~talismani@2601:644:8500:8350::256c) (Ping timeout: 240 seconds)
12:24:29 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:25:25 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
12:25:44 vglfr joins (~vglfr@88.155.96.35)
12:27:49 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:28:41 vglfr joins (~vglfr@88.155.96.35)
12:31:07 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:31:22 vglfr joins (~vglfr@88.155.96.35)
12:34:31 × Tuplanolla quits (~Tuplanoll@91-159-68-11.elisa-laajakaista.fi) (Ping timeout: 256 seconds)
12:35:47 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:35:48 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:37:06 vglfr joins (~vglfr@88.155.96.35)
12:38:51 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
12:40:23 machinedgod joins (~machinedg@24.105.81.50)
12:41:36 × yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection)
12:42:11 yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net)
12:42:38 Hanicef joins (~gustaf@81-229-9-108-no92.tbcn.telia.com)
12:43:49 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
12:49:49 Tuplanolla joins (~Tuplanoll@91-159-69-16.elisa-laajakaista.fi)
12:52:49 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
12:53:31 vglfr joins (~vglfr@88.155.96.35)
12:53:57 × nhatanh02 quits (~satori@123.24.172.30) (Ping timeout: 240 seconds)
12:55:23 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
12:59:37 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds)
13:02:17 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:02:30 vglfr joins (~vglfr@88.155.96.35)
13:04:33 × max22- quits (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 256 seconds)
13:06:58 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:07:37 vglfr joins (~vglfr@88.155.96.35)
13:10:43 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
13:10:45 × Jing quits (~hedgehog@240e:390:7c53:a7e1:24aa:cde6:528:d0da) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:11:13 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
13:11:55 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:12:04 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
13:12:04 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
13:12:04 wroathe joins (~wroathe@user/wroathe)
13:12:05 vglfr joins (~vglfr@88.155.96.35)
13:13:17 ProfSimm joins (~ProfSimm@87.227.196.109)
13:14:21 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:14:32 vglfr joins (~vglfr@88.155.96.35)
13:16:09 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
13:16:09 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:16:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
13:17:07 vglfr joins (~vglfr@88.155.96.35)
13:17:37 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
13:19:17 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:19:58 vglfr joins (~vglfr@88.155.96.35)
13:20:13 Jing joins (~hedgehog@240e:390:7c53:a7e1:7c3e:33e9:a263:3716)
13:22:13 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:22:53 vglfr joins (~vglfr@88.155.96.35)
13:24:57 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:25:37 × mstksg quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds)
13:25:42 vglfr joins (~vglfr@88.155.96.35)
13:27:11 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
13:27:52 mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
13:28:23 jackson99 joins (~bc8147f2@cerf.good1.com)
13:30:13 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:30:23 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
13:30:30 vglfr joins (~vglfr@88.155.96.35)
13:32:16 lavaman joins (~lavaman@98.38.249.169)
13:32:42 × SummerSonw quits (~The_viole@203.77.49.232) (Quit: Leaving)
13:34:13 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds)
13:34:32 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
13:41:47 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480::41)
13:41:49 × xff0x quits (~xff0x@2001:1a81:52d4:9900:80b8:248c:472c:34e) (Ping timeout: 240 seconds)
13:42:54 xff0x joins (~xff0x@2001:1a81:52d4:9900:4d46:915d:4480:7a51)
13:44:30 × x88x88x quits (~x88x88x@149.28.53.172) (Quit: ZNC - https://znc.in)
13:52:53 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
13:53:28 slowButPresent joins (~slowButPr@user/slowbutpresent)
13:54:02 vglfr joins (~vglfr@88.155.96.35)
13:55:21 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
13:55:41 son0p joins (~ff@181.136.122.143)
14:00:37 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
14:01:03 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
14:02:13 x88x88x joins (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb)
14:02:24 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
14:02:58 CiaoSen joins (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
14:05:11 × deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds)
14:07:44 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
14:07:58 vglfr joins (~vglfr@88.155.96.35)
14:08:27 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
14:09:15 euandreh joins (~euandreh@191.181.59.160)
14:12:37 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
14:12:37 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
14:13:19 vglfr joins (~vglfr@88.155.96.35)
14:14:36 nhatanh02 joins (~satori@123.24.172.30)
14:15:25 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
14:15:49 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds)
14:15:57 uam joins (uid360535@id-360535.hampstead.irccloud.com)
14:16:49 vglfr joins (~vglfr@88.155.96.35)
14:18:07 cemguresci joins (~cemguresc@2001:a61:11ff:a001:b826:a072:7137:d00a)
14:18:12 × cemguresci quits (~cemguresc@2001:a61:11ff:a001:b826:a072:7137:d00a) (Client Quit)
14:19:01 × vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer)
14:19:12 vglfr joins (~vglfr@88.155.96.35)
14:20:01 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
14:21:30 × jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout))
14:21:46 × jassob quits (~jassob@h-155-4-71-72.A785.priv.bahnhof.se) (Ping timeout: 260 seconds)
14:22:12 × xsperry quits (~xs@user/xsperry) (Remote host closed the connection)
14:22:13 max22- joins (~maxime@2a01cb088335980006a2e176d919440a.ipv6.abo.wanadoo.fr)
14:22:42 jassob joins (~jassob@h-155-4-71-72.A785.priv.bahnhof.se)
14:22:52 × Hanicef quits (~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving)
14:24:29 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 252 seconds)
14:28:37 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
14:30:54 Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com)
14:33:40 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
14:34:39 × rito_ quits (~rito_gh@45.112.243.206) (Ping timeout: 256 seconds)
14:39:14 × dsrt^ quits (~dsrt@wsip-98-188-246-242.mc.at.cox.net) (Remote host closed the connection)
14:39:17 zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
14:40:07 × antony quits (~The_viole@203.77.49.232) (Quit: Leaving)
14:41:42 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
14:41:47 moshet joins (~moshet@179.33.156.20)
14:42:44 shapr joins (~user@2601:7c0:c202:5190:6367:969d:31ac:68f)
14:43:01 × acidjnk quits (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:43:01 × acidjnk_new quits (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:43:25 × zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 240 seconds)
14:43:39 skreli joins (~skreli@cpe-72-134-91-230.natsow.res.rr.com)
14:44:21 × skreli quits (~skreli@cpe-72-134-91-230.natsow.res.rr.com) (Quit: leaving)
14:45:16 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
14:45:40 zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
14:48:15 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
14:49:58 geekosaur joins (~geekosaur@xmonad/geekosaur)
14:50:32 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
14:50:48 hud joins (~hud@uwyo-129-72-161-67.uwyo.edu)
14:53:44 <hud> hey all, not sure if this is the right place to ask about build dependencies, if I run `cabal repl -b parsec` it
14:54:16 <hud> s able to find the package, but if I include that in parsec in `build-depends` of my .cabal file it cant be found
14:55:18 <jneira[m]> hmm it should, could you post the .cabal file?
14:55:19 <[exa]> just to be sure -- "if I include that _in parsec_ in build-depends" -- there's a parsec section?
14:55:29 <[exa]> +1 please pastebin
14:55:56 <[exa]> also preferably the error message
14:56:29 <hud> https://paste.tomsmeding.com/wCBuVd60
14:56:46 <hud> oh I can add multiple files hold on
14:58:11 <[exa]> that looks m'kay, let's see the error :]
14:58:46 <hud> Oh no wait I think it's just saying its redundant - all good !
14:59:59 <hud> https://paste.tomsmeding.com/woIFV49V for completion - all good
15:01:10 <[exa]> yeah it's telling you that you should write actual code using it :D
15:02:59 × zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 256 seconds)
15:03:41 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
15:03:41 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
15:03:41 wroathe joins (~wroathe@user/wroathe)
15:04:36 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
15:09:22 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
15:09:56 × euandreh quits (~euandreh@191.181.59.160) (Ping timeout: 256 seconds)
15:11:36 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
15:11:54 × Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Read error: Connection reset by peer)
15:15:09 × nunggu quits (~q@gateway/tor-sasl/nunggu) (Ping timeout: 276 seconds)
15:16:26 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
15:16:54 nunggu joins (~q@gateway/tor-sasl/nunggu)
15:17:29 × aouestbillie quits (~gallup@192-222-138-215.qc.cable.ebox.net) (Remote host closed the connection)
15:17:29 × ouestbillie quits (~gallup@192-222-138-215.qc.cable.ebox.net) (Remote host closed the connection)
15:21:49 ouestbillie joins (~gallup@192-222-138-215.qc.cable.ebox.net)
15:23:04 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:23:33 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
15:32:53 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
15:34:40 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
15:34:56 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
15:35:49 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection)
15:36:57 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds)
15:37:52 xsperry joins (~xs@user/xsperry)
15:40:34 xb0o2 joins (~xb0o2@user/xb0o2)
15:41:01 × Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds)
15:42:16 stef204 joins (~stef204@user/stef204)
15:43:57 × shapr quits (~user@2601:7c0:c202:5190:6367:969d:31ac:68f) (Ping timeout: 240 seconds)
15:45:27 <albet70> why IOT does not exit?
15:45:39 <Hecate> albet70: what
15:45:44 <Hecate> what do you mean by IOT?
15:45:46 <geekosaur> how could it exist?
15:45:52 <Hecate> International Organisation of Truffles?
15:46:15 <albet70> like the other transfer
15:46:20 <albet70> MaybeT
15:47:12 <hpc> albet70: try writing it
15:47:36 zaquest joins (~notzaques@5.130.79.72)
15:47:40 TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com)
15:47:56 euandreh joins (~euandreh@2804:14c:33:9fe5:f755:55d9:216b:76f6)
15:48:34 <albet70> IOT m (IO a)
15:48:51 <Hecate> what :'')
15:49:59 <Rembane> International Truffles <3
15:50:13 <Rembane> albet70: How many IOT could you layer on top of each other?
15:50:37 <geekosaur> and what would this accomplish?
15:50:53 <albet70> there's an evil term I think, Inner Orgasme of ...
15:50:55 <geekosaur> think also about things like ordering of I/O actions
15:51:20 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
15:51:24 <hpc> also try not to accidentally imagine things like MaybeT IO while you're working it out ;)
15:51:40 <geekosaur> but "try writing it" I think meant try implementing something that would work as e.g. IOT (State Int a)
15:51:54 <hpc> IOT (State Int) a
15:52:02 <hpc> data IOT m a = ???
15:52:02 <geekosaur> yeh, sorry
15:52:22 <hpc> instance MonadTrans IOT where ???
15:52:29 <hpc> see if you can fill in those blanks
15:53:13 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:53:15 <hpc> for comparison, try filling in the same blanks for MaybeT, without looking at the existing definition
15:53:46 <hpc> or IdentityT if you like writing code that does nothing :D
15:54:12 <albet70> MaybeT m Maybe a
15:57:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
15:58:51 <albet70> f :: a -> Either a b; traverse f [a]; if that f return Left a, it will return Left a as result, so I wonder when f doing some IO, and how it break and return when IO failed
16:00:07 × Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Quit: You have been kicked for being idle)
16:00:12 × fsckskye[m] quits (~kmatrixth@2001:470:69fc:105::1:3b2f) (Quit: You have been kicked for being idle)
16:00:17 <albet70> for example, f take input from that list and check the database with that input and it may fail
16:00:18 × AlainJourez[m] quits (~sherekahn@2001:470:69fc:105::1:4a71) (Quit: You have been kicked for being idle)
16:00:31 Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5)
16:00:43 fsckskye[m] joins (~kmatrixth@2001:470:69fc:105::1:3b2f)
16:00:45 fsckskye[m] parts (~kmatrixth@2001:470:69fc:105::1:3b2f) ()
16:00:55 AlainJourez[m] joins (~sherekahn@2001:470:69fc:105::1:4a71)
16:00:58 <albet70> when it failed how to break the next action
16:02:39 <hpc> :t traverse
16:02:40 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
16:03:27 <hpc> the effects of f will show up in the result
16:04:10 <hpc> since the result is (IO [b]), it just does all the (f a) stuff in sequence
16:04:32 <hpc> when t = [], it's just each element from start to end of the list
16:04:58 <hpc> for other Traversable types, it could be some more interesting ordering
16:08:03 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds)
16:09:08 <albet70> "hpc :since the result is (IO [b]), it just does all the (f a) stuff in sequence", but when IO b failed, I hope it breaks the list and return, not to the end of the list
16:09:11 × YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
16:09:44 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
16:10:30 <hpc> it will, if f fails in a way that short-circuits
16:10:34 <albet70> in other languages, do IO in a for statement, and use break or return to brea the list
16:10:46 YoungFrog joins (~youngfrog@2a02:a03f:c21b:f900:f89b:2c73:97b1:7ba3)
16:11:31 <albet70> but IO doesn't have the effect of short circuit
16:12:03 <albet70> Left a or Nothing can do short circuit
16:12:19 × Jing quits (~hedgehog@240e:390:7c53:a7e1:7c3e:33e9:a263:3716) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:13:34 <Rembane> albet70: If you use throwIO IO can shortcircuit.
16:13:45 <Rembane> I wonder if this works...
16:13:56 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 252 seconds)
16:14:07 <albet70> "🟢 Rembane :albet70: If you use throwIO IO can shortcircuit.", that's raiseError in some languages
16:14:17 geekosaur wonders if spoon can do that
16:14:35 <albet70> what if f :: a -> IO b -> Either a b?
16:14:40 <Rembane> albet70: It is indeed. :)
16:16:13 <Rembane> > throwIO Overflow
16:16:15 <lambdabot> error:
16:16:15 <lambdabot> • No instance for (Typeable a0)
16:16:15 <lambdabot> arising from a use of ‘show_M87663382183998972258’
16:16:17 <Rembane> Ach.
16:16:43 <geekosaur> % throwIO Overflow
16:16:43 <yahb> geekosaur: *** Exception: arithmetic overflow
16:17:26 <albet70> f :: a -> IO b -> Either a b; traverse f [a]; would this do the trick? if IO b failed, short circuit?
16:17:27 <Rembane> There we go. yahb > lambdabot
16:18:56 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
16:19:43 pragma- joins (~chaos@user/pragmatic-chaos)
16:20:16 Jing joins (~hedgehog@240e:390:7c53:a7e1:3074:63b1:2e6b:fa59)
16:21:01 × kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 240 seconds)
16:23:07 <albet70> can we do some IO in f :: a-> Either a b?
16:24:00 <albet70> in Either do notation , can we print something?
16:24:35 <geekosaur> no
16:25:27 <albet70> no the both? or only the last?
16:25:28 <EvanR> that's not purely functional, sorry
16:25:38 <geekosaur> no to both
16:25:42 × uam quits (uid360535@id-360535.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
16:25:45 <geekosaur> do notation is not what enables I/O
16:25:51 EvanR points at the "purely functional" sign above the door
16:25:57 <albet70> and in EitherT?
16:26:12 <geekosaur> % putStrLn "hi" >> putStrLn "bye" >> return ()
16:26:12 <yahb> geekosaur: hi; bye
16:26:29 <EvanR> ExceptT e IO
16:26:42 <EvanR> is a monad
16:26:51 <EvanR> it can do IO with liftIO
16:27:23 <albet70> but ExceptT can't do short circuit
16:27:33 <EvanR> that's what ExceptT ... does
16:27:59 <EvanR> it's basically EitherT
16:28:13 <albet70> can it?
16:28:22 <EvanR> it was just a branding issue back in the day
16:29:08 <EvanR> it's one of many ways to short circuit
16:29:21 <EvanR> cancel a computation early
16:29:43 <albet70> so f :: a -> EitherT a m b; traverse f [a]; would short circuit?
16:29:57 <albet70> EitherT a IO b
16:30:17 <EvanR> just saying I think ExceptT is more idiomatic now for that
16:30:33 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:30:45 <EvanR> and yes
16:31:19 <EvanR> but to break out of a for loop purposes there is probably a better way
16:36:10 × Jing quits (~hedgehog@240e:390:7c53:a7e1:3074:63b1:2e6b:fa59) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:36:16 <albet70> > let f x = do { liftIO print x; if (x>3) then EithertT Left x else return x } in traverse f [1..6]
16:36:17 <lambdabot> error:
16:36:17 <lambdabot> Data constructor not in scope:
16:36:17 <lambdabot> EithertT :: (a1 -> Either a1 b0) -> b1 -> m b1
16:36:36 <EvanR> :k ExceptT
16:36:37 <lambdabot> * -> (* -> *) -> * -> *
16:37:37 × moshet quits (~moshet@179.33.156.20) (Ping timeout: 256 seconds)
16:37:37 <EvanR> :t runExceptT
16:37:38 <lambdabot> ExceptT e m a -> m (Either e a)
16:38:31 <EvanR> 😎
16:38:44 <albet70> in Either, how the 'return x' know it suppose to be Left a or Right a?
16:38:58 <EvanR> convention says Right is pure
16:39:15 moshet joins (~moshet@179.33.156.20)
16:39:28 <EvanR> Left is an effect
16:39:32 <albet70> "EvanR :convention says Right is pure", so Left isn't pure?
16:39:43 <EvanR> Left is interpreted as an effect
16:39:56 <EvanR> namely, short circuit
16:40:03 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:41:20 <EvanR> by pure I meant the API, pure :: a -> Either e a
16:41:33 <EvanR> which is the same as return
16:41:43 <albet70> EvanR the notorious Cont can do short circuit, right?
16:42:38 <EvanR> CPS can do short circuit, and Cont lets you compose CPS programs
16:43:02 <EvanR> if you don't want to do it manually
16:43:39 <EvanR> either way, black magic
16:44:17 × vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds)
16:44:35 <albet70> black magic in haskell, not in others?
16:44:40 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
16:44:48 <EvanR> not really a haskell thing
16:44:53 <albet70> or related to lazy strategy
16:45:15 <EvanR> continuations is (was?) a big deal in lisps
16:45:39 <EvanR> rather, using them in non trivial ways
16:46:10 <EvanR> control flow shenanigans
16:46:21 <albet70> but in haskell in Cont, capture the fixed point can do loop, this depends on lazy strategy, other languages can't do ir
16:46:27 <albet70> do it
16:46:43 <EvanR> by itself, just lazy evaluation lets you do many things, Cont or not
16:47:03 <EvanR> CPS or not
16:48:07 <albet70> the funny thing is lisp use macro to do capture continuation thing
16:48:14 <albet70> not the function
16:49:09 <albet70> and only a few languages support macro
16:49:44 <EvanR> all languages support C preprocessor xD
16:49:59 <EvanR> enjoy
16:51:58 <albet70> hehe it sounds like all languages can turn to machine languages or assembly languages
16:55:03 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:55:59 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:57:44 <EvanR> myLoop k = do{ tired <- ... work work work ...; if tired then k else myLoop k }
17:02:07 <albet70> "EvanR :myLoop k = do{ tired <- ... work work work ...; if tired then k else myLoop k }", myLoop k :: ?
17:02:19 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds)
17:03:38 Franciman joins (~Franciman@mx1.fracta.dev)
17:03:40 Franciman parts (~Franciman@mx1.fracta.dev) (WeeChat 3.4)
17:04:36 <EvanR> :t fix \myLoop k -> do { tired <- return False; if tired then k else myLoop k }
17:04:36 <lambdabot> error:
17:04:36 <lambdabot> Unexpected lambda expression in function application:
17:04:36 <lambdabot> \ myLoop k
17:04:45 <EvanR> :t fix $ \myLoop k -> do { tired <- return False; if tired then k else myLoop k }
17:04:46 <lambdabot> Monad m => m b -> m b
17:05:04 <EvanR> k : Monad m => m b
17:06:35 <EvanR> k breaks out of the loop
17:12:27 shapr joins (~user@2601:7c0:c202:5190:232c:3331:7d0c:8370)
17:12:36 kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
17:16:21 <albet70> fix depends lazy strategy, can u do it in python or js?
17:16:50 <EvanR> not a fix thing
17:16:59 <hpc> you can write fix for functions, but not for other types of data
17:17:07 <hpc> you can do the myLoop thing, but not
17:17:10 <hpc> > fix (1:)
17:17:12 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1...
17:17:20 <EvanR> :t let myLoop k = do { tired <- return False; if tired then k else myLoop k } in myLoop
17:17:21 <lambdabot> Monad m => m b -> m b
17:17:29 <EvanR> no you can't do that in javascript
17:18:49 <EvanR> how to do things in javascript is a whole nother channel
17:20:17 × thevishy quits (~Nishant@2405:201:f005:c007:40d9:4255:8f71:3678) (Quit: Leaving)
17:20:42 zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
17:24:57 × zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 240 seconds)
17:25:18 <int-e> EvanR: may I suggest blink >> myLoop k for the last bit ;)
17:26:02 <EvanR> what meme is this
17:26:16 <[itchyjunk]> https://bpa.st/2O4A
17:26:43 <[itchyjunk]> Almost everything i am writing seems to involve writing a helper function then composing it with one of the functions in question :x
17:27:22 <EvanR> if you're lucky the helper function is a composition of existing functions
17:27:28 <int-e> [itchyjunk]: \x xs -> xs ++ [x] <-- you don't have to name your little helpers
17:27:53 s2k joins (~textual@122.172.234.134)
17:27:53 <[itchyjunk]> ah right, i keep forgetting i can do that
17:27:54 <int-e> now... can we do that with foldr without making it quadratic time? :-P
17:28:17 <[itchyjunk]> Hopefully the answer is no (or maybe yes if you are not me).
17:28:37 econo joins (uid147250@user/econo)
17:28:50 <EvanR> foldr can do anything
17:28:51 jackson99 joins (~bc8147f2@cerf.good1.com)
17:28:55 <int-e> (somewhat hard, it's essentially the "implement foldl in terms of foldr" exercise, and that involves picking the right return type for the foldr)
17:28:59 Erutuon joins (~Erutuon@user/erutuon)
17:29:10 <EvanR> because that is the only way to access a list, it turns out
17:29:15 <[itchyjunk]> can it be applied to itself? answer is probably yet but i don't think i ma ready for it
17:29:36 <jackson99> [itchyjunk] you will have an easier time implementing reverse with foldl
17:29:36 <[itchyjunk]> hmm how do you mean that's the only way to access a list? :o
17:30:01 <[itchyjunk]> jackson99, yeah i think since foldr gave an identity, same thing with foldl might return a reverse function?
17:30:08 <[itchyjunk]> foldl (:) [] xs ?
17:30:13 <jackson99> close
17:30:16 <[itchyjunk]> :<
17:30:21 <jackson99> you just have to massage (:) so that types check
17:30:28 <[itchyjunk]> hmmm
17:30:31 <jackson99> :t foldl
17:30:32 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
17:31:19 <jackson99> accumulator (list in your case) is the first argument, element of the list is the second argument
17:32:03 zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
17:32:24 <[itchyjunk]> ah i see
17:34:13 pragma- parts (~chaos@user/pragmatic-chaos) (Bye!)
17:34:48 <[itchyjunk]> wait `foldl (:) [] xs` where lets say xs = [1..5] would be (:) applies to 5 and [] so `(:) 5 []` right?
17:35:07 <EvanR> :t foldl (:) [] [1..5]
17:35:08 <lambdabot> error:
17:35:08 <lambdabot> • Occurs check: cannot construct the infinite type: a ~ [a]
17:35:08 <lambdabot> Expected type: [a] -> [a] -> [a]
17:35:09 <EvanR> bzzzz
17:35:39 <[itchyjunk]> :t (:)
17:35:40 <lambdabot> a -> [a] -> [a]
17:35:53 <EvanR> first arg to foldl visitor is the accumulator
17:36:14 <EvanR> which should be a reversed list
17:36:33 × zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 256 seconds)
17:36:57 <jackson99> > foldl _ [] []
17:37:00 <lambdabot> error:
17:37:02 <lambdabot> • Found hole: _ :: [a] -> a0 -> [a]
17:37:04 <lambdabot> Where: ‘a0’ is an ambiguous type variable
17:37:10 <[itchyjunk]> oh `foldr f base list` is `f lastElement base` but for `foldl f base list` its `f base lastElement` ?
17:37:20 <jackson99> can you write that function? [a] -> a -> [a]
17:37:23 <jackson99> using (:)
17:37:55 <jackson99> [itchyjunk] yes. base is usually called accumulator
17:38:21 × s2k quits (~textual@122.172.234.134) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:38:52 <EvanR> no, foldl f base list becomes f everythingDone []
17:39:00 <EvanR> base is buried in a pile of computation by that point
17:39:18 <jackson99> it is base on first call
17:39:42 <EvanR> in foldl' yes
17:40:06 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
17:41:02 <EvanR> everythingDone is the reversed list in this case
17:41:28 <EvanR> the 'first call' never happened yet
17:42:05 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
17:43:05 <jackson99> I'm not sure all this is helpful to someone trying to write [a] -> a -> [a] function
17:43:57 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds)
17:43:59 <EvanR> well foldl f base list becoming f base LastElement is wrong
17:44:17 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:44:20 <EvanR> at least
17:45:09 <[itchyjunk]> hmm, foldl takes the second argument and first element of the list so in `foldl (go2) [] [1..5]`, i take [] and 1 and does `go2 [] x` where go2 xs x = x : xs
17:45:13 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:45:18 × aplainze1akind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
17:45:49 <EvanR> yeah
17:45:53 <[itchyjunk]> 1:[] -> 2:1:[]
17:45:54 <[itchyjunk]> hmmm
17:46:11 <jackson99> > let go2 xs x = x : xs in foldl go2 [] [1..5]
17:46:13 <lambdabot> [5,4,3,2,1]
17:46:19 <jackson99> we have a function for this btw
17:46:21 <jackson99> @src flip
17:46:21 <lambdabot> flip f x y = f y x
17:46:21 <[itchyjunk]> ahh my code had a typo
17:46:27 <[itchyjunk]> i wrote foldr instead of foldl
17:46:39 <jackson99> > foldl (flip (:)) [1..5]
17:46:41 <lambdabot> <[Integer] -> [Integer]>
17:46:46 <jackson99> > foldl (flip (:)) [] [1..5]
17:46:47 <lambdabot> [5,4,3,2,1]
17:46:48 <EvanR> foldl and foldr are similarly named, but wildly different
17:47:00 <EvanR> don't put them in the same drawer in your mind xD
17:47:09 <[itchyjunk]> https://bpa.st/DC5A
17:47:20 <[itchyjunk]> Yes, this is very trippy.
17:47:25 zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
17:47:52 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:48:10 <EvanR> in general it helps to figure out a way to write out intermediate steps of a lazy computation
17:48:14 <EvanR> then you can visualize what's going on
17:48:58 Sgeo joins (~Sgeo@user/sgeo)
17:49:16 <EvanR> foldl (flip (:)) [] [1,2,3,4,5] is the first step
17:49:20 <EvanR> or zeroth step
17:49:25 <EvanR> then
17:49:28 <polyphem> [itchyjunk] : foldr op nil xs substitutes (:) with op and [] with nil in xs , think that way
17:50:58 <[itchyjunk]> hmm
17:50:59 <EvanR> foldl (flip (:)) (1:[]) [2,3,4,5] is the next step
17:51:09 <EvanR> see
17:51:18 <[itchyjunk]> oh flip is a real function? hmmmm
17:51:21 <EvanR> yes
17:51:24 <c_wraith> I don't think that way. I think about how on non-empty lists, foldr reduces to a call to f, while foldl reduces to a call to foldl. That's the key difference to me.
17:51:37 <[itchyjunk]> thought you were using as a placeholder for the idea lol
17:52:11 <EvanR> an example of skipping the helper function by using existing functions and putting them together
17:52:24 <jackson99> itchyjunk, you don't have to name every trivial function btw, foldl (\acc x -> x : acc) would work too
17:52:27 <EvanR> which you can only do after learning the "existing" vocab
17:52:27 SomeoneElse joins (~SomeoneEl@c-24-34-241-188.hsd1.ma.comcast.net)
17:52:57 <jackson99> or just flip, as was mentioned several times above
17:53:45 <polyphem> foldr (+) 0 (1:2:3:[]) == 1+2+3+0
17:54:17 <EvanR> [itchyjunk], did you see my two steps above? if you go ahead and write out all 5 (6?) steps I hope it's very clear and beautiful!
17:54:52 <jackson99> > foldr (+) z [a,b,c,d]
17:54:53 <lambdabot> a + (b + (c + (d + z)))
17:54:56 <jackson99> > foldl (+) z [a,b,c,d]
17:54:57 <lambdabot> z + a + b + c + d
17:55:14 SomeoneElse parts (~SomeoneEl@c-24-34-241-188.hsd1.ma.comcast.net) ()
17:55:24 <EvanR> the final form of folding Exprs kind of loses something
17:55:26 deadmarshal joins (~deadmarsh@95.38.231.124)
17:56:14 <jackson99> hmm, probably easier to visualize:
17:56:17 <jackson99> > foldr f z [a,b,c,d]
17:56:19 <lambdabot> f a (f b (f c (f d z)))
17:56:21 <jackson99> > foldl f z [a,b,c,d]
17:56:22 <lambdabot> f (f (f (f z a) b) c) d
17:56:52 <[itchyjunk]> yes i can just barely follow along the notation but i think it makes sense
17:57:04 <EvanR> my notation was literally haskell expressions xD
17:57:08 <EvanR> of your example
17:58:01 <[itchyjunk]> right!
17:58:52 × kimjetwav quits (~user@2607:fea8:2363:8f00:215b:2bd2:2b33:135e) (Remote host closed the connection)
17:59:00 <sofviic[m]> foldr = 'accumulates' starting from the right
17:59:00 <sofviic[m]> foldl = 'accumulates' starting from the left
17:59:09 <EvanR> oof...
17:59:09 kimjetwav joins (~user@2607:fea8:2363:8f00:1b40:b56a:3751:6306)
17:59:22 × ouestbillie quits (~gallup@192-222-138-215.qc.cable.ebox.net) (Ping timeout: 256 seconds)
17:59:56 <polyphem> [itchyjunk]: heres a fun tal about intuition for list folds : https://www.youtube.com/watch?v=t9pxo7L8mS0
18:00:06 <polyphem> *talk*
18:01:25 × zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 240 seconds)
18:03:03 <[itchyjunk]> Hm there are conferences where there are talks just about fold? interesting!
18:04:23 <EvanR> well, the idea of folding things goes beyond looping through a list
18:04:33 <EvanR> IT'S KIND OF A BIG DEAL
18:04:38 <[itchyjunk]> ah
18:06:47 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:07:38 × kimjetwav quits (~user@2607:fea8:2363:8f00:1b40:b56a:3751:6306) (Remote host closed the connection)
18:07:41 × CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
18:07:55 kimjetwav joins (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f)
18:10:48 dyeplexer joins (~dyeplexer@user/dyeplexer)
18:15:01 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
18:15:09 jgeerds joins (~jgeerds@55d4bbed.access.ecotel.net)
18:15:14 × zer0bitz quits (~zer0bitz@196.244.192.60) (Ping timeout: 256 seconds)
18:15:24 johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
18:18:57 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds)
18:24:18 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
18:24:22 rito_ joins (~rito_gh@45.112.243.149)
18:25:48 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
18:25:48 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
18:25:48 wroathe joins (~wroathe@user/wroathe)
18:29:47 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:33:47 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
18:36:44 <[itchyjunk]> "" is an empty string right?
18:36:55 <[itchyjunk]> Is that the best way to talk about nil case of a string?
18:36:56 <geekosaur> yes
18:37:06 <geekosaur> what is "nil case"?
18:37:10 <monochrom> It is one of the many best ways.
18:37:21 <geekosaur> also, since String is [Char],
18:37:28 <geekosaur> > [] :: String
18:37:30 <lambdabot> ""
18:37:44 <EvanR> it's literally the empty string (list)
18:38:50 <[itchyjunk]> hmm
18:39:50 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:40:23 <EvanR> probably falls in the same mindblowing category of tech such as 'zero' and 'no op'
18:40:29 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection)
18:41:56 <EvanR> https://en.wikipedia.org/wiki/Zero-ohm_link
18:42:03 <monochrom> Nah in this case it is the surprise that since String = [Char], list syntax works.
18:42:48 CiaoSen joins (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
18:43:32 <EvanR> yeah I kind of wouldn't complain if String became an abstract type and was not a list
18:44:31 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
18:44:31 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
18:44:31 wroathe joins (~wroathe@user/wroathe)
18:44:46 <monochrom> Performance police complains that String is not an abstract type. >:)
18:44:48 <jackson99> I wouldn't complain if it became alias for Text
18:44:49 <EvanR> though decades of code would probably complain
18:46:03 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:48:00 <johnw> or just make lazy Text available through the Prelude
18:48:20 <johnw> I never use String, but it means importing and enabling OverloadingStrings everywhere, all the time
18:48:31 <johnw> I should make a macro for that
18:48:51 <EvanR> standard pile of imports everywhere is another story
18:49:00 Jupy7er joins (~Jupy7er@2001:d08:e3:b1:dd4e:c9da:9c60:5d27)
18:49:40 × Jupy7er quits (~Jupy7er@2001:d08:e3:b1:dd4e:c9da:9c60:5d27) (Client Quit)
18:49:48 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
18:49:51 <johnw> I wish I could manage language features in another Haskell module (not cabal) so that I could import that in and have everything. Project preludes.
18:52:42 zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
18:56:28 little_mac joins (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e)
18:57:07 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:58:53 × kimjetwav quits (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f) (Remote host closed the connection)
19:00:17 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
19:00:17 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
19:00:17 wroathe joins (~wroathe@user/wroathe)
19:03:53 × max22- quits (~maxime@2a01cb088335980006a2e176d919440a.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
19:04:37 × zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds)
19:05:27 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
19:08:12 × AlexNoo quits (~AlexNoo@178.34.162.219) (Read error: Connection reset by peer)
19:08:56 × Topsi1 quits (~Tobias@dyndsl-095-033-023-075.ewe-ip-backbone.de) (Read error: Connection reset by peer)
19:10:12 × deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds)
19:10:19 s2k joins (~textual@122.172.234.134)
19:12:41 AlexNoo joins (~AlexNoo@178.34.162.219)
19:15:23 <[itchyjunk]> I have done confused myself again
19:15:44 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
19:16:44 <[itchyjunk]> If i want to take two string and remove every char in second that is also present in one, is my base case take a char and a string and remove that char from the string?
19:16:50 <[itchyjunk]> i think so, right?
19:16:59 kimjetwav joins (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f)
19:17:08 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:17:15 lavaman joins (~lavaman@98.38.249.169)
19:17:18 <[itchyjunk]> ah, i think i have solved that case actually
19:17:19 <[itchyjunk]> https://bpa.st/7ETQ
19:17:48 <[itchyjunk]> i think i just need to tweak my blah so it can take a string and i can recurse through stuff
19:20:15 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds)
19:20:55 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
19:21:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
19:21:25 hololeap joins (~hololeap@user/hololeap)
19:22:42 <[exa]> iteratee_: sounds like a combination of 'filter' and 'elem'
19:23:42 <[exa]> oh sorry, misfired highlight. Originally to [itchyjunk] ^
19:23:53 <hololeap> anyone have any idea how to run LogicT branches in parallel?
19:24:09 <[itchyjunk]> hmm, well i asks me to use foldr to solve it ;x
19:24:18 <hololeap> this is what I tried, but I get nothing but fizzled sparks: parChoice s = runEval . fmap choice . parList s
19:25:03 <[exa]> hololeap: is that even possible given there are cuts and everything?
19:25:13 <hololeap> I have no idea :/
19:26:04 <EvanR> [itchyjunk], did you write filter already using foldr
19:26:30 <EvanR> if so, you technically used foldr xD
19:26:33 <[exa]> there's the "fair conjunction" and "fair disjunction" combinators that iirc don't go well with parallel
19:27:36 <[itchyjunk]> I have not written filter already using foldr (filter at all)
19:28:00 <EvanR> oh well,
19:28:03 <[itchyjunk]> I should maybe do some filter stuff, but i think i can solve this problem :x i'll look at filter in near (far?) future
19:28:25 <EvanR> it sounds like it's doing a lot at once
19:28:54 <hololeap> [exa]: my idea was that each branch (in this case) is equally likely to return a result, so have them run in parallel and return the first success
19:28:56 <EvanR> since there are two lists I'm not sure you can do with only 1 foldr
19:29:36 <[exa]> hololeap: what if it backtracks outside the parallelizable area (restarting your parallel spawner)?
19:29:56 <[exa]> anyway my view is pretty much naive on this but I expect trouble :D
19:30:09 <hololeap> that's fine. any feedback is welcome
19:30:41 <hololeap> I'm also very new to the parallel side of haskell
19:30:41 <[exa]> perhaps manually running a few logicTs using a normal parallel strategy would suffice with speed and prevent the possible weirdness?
19:31:02 max22- joins (~maxime@2a01cb0883359800fc4f47b740d6e929.ipv6.abo.wanadoo.fr)
19:32:30 <hololeap> I'll keep reading/thinking about it
19:33:06 <[exa]> if you know all branches, you can just "ping" them with `par` a bit in advance before the branches, and then run the branches normally
19:33:34 <[exa]> *before the branching
19:33:57 <hololeap> I thought that was what my code did
19:35:28 <hololeap> choice is from parser-combinators, btw: https://hackage.haskell.org/package/parser-combinators-1.3.0/docs/Control-Monad-Combinators.html#v:choice
19:36:27 <hololeap> oh, asum is more canonical
19:36:38 <hololeap> same thing though
19:36:44 <[itchyjunk]> I am trying to understand this error at the bottom of this paste : https://bpa.st/LEVQ
19:37:05 <[exa]> hololeap: what's the type after `fmap choice` ?
19:37:26 <hololeap> parChoice :: forall m a. Alternative m => Strategy (m a) -> [m a] -> m a
19:37:31 <[exa]> [itchyjunk]: likely too much parens around ++
19:37:53 <[itchyjunk]> hmm
19:38:06 <hololeap> so it's Eval (m a)
19:38:12 <[exa]> [itchyjunk]: likely no parens in that line are necessary
19:38:19 <[exa]> except for the patternmatch
19:38:37 <[itchyjunk]> i was getting ome error without the parens too :<
19:39:02 <[itchyjunk]> oh..
19:39:13 <[itchyjunk]> the (++) is no good too?
19:39:14 <[exa]> perhaps you want `:` instd of `++`
19:39:27 <[exa]> because you're adding a single element from the left, yeah?
19:39:32 <[itchyjunk]> I originally had : but my blah returns a list right?
19:39:43 <[itchyjunk]> returns a string
19:40:07 <[exa]> hololeap: anyway I would expect the stuff to expand to something like: branch1val `par` branch2val `par` branch2val `par` LogicT something
19:40:35 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
19:40:51 <[exa]> [itchyjunk]: why does it return a string?
19:41:05 <[exa]> maybe we should put a proper name on the blah
19:41:27 jakalx joins (~jakalx@base.jakalx.net)
19:41:29 <[exa]> what is it supposed to do actually?
19:41:31 <[itchyjunk]> blah takes a char c and a string s and removes all occurance of c from s and returns a string
19:42:04 <[exa]> it can't because it doesn't recurse
19:42:15 <hololeap> [itchyjunk]: the issue is that you have parens around ++
19:42:28 <hololeap> `(blah x y ys) (++) (go xs y ys)` is very different than `(blah x y ys) ++ (go xs y ys)`
19:42:42 <[exa]> yap ^
19:42:54 <[itchyjunk]> [exa], blah is working fine, i test it with myRmv
19:43:10 <[itchyjunk]> oh, myRmv takes a char and a string and removes the char from the string
19:43:19 <[itchyjunk]> blah is a helper function for myRmv :<
19:43:26 <[itchyjunk]> wait, maybe i see the issue
19:43:37 <[itchyjunk]> hololeap, right, i removed the ()'s and now it compiles
19:43:42 <[itchyjunk]> but I am getting some logical error
19:44:14 <[exa]> so blah is `prefixUnlessEqual` or something?
19:45:47 <[itchyjunk]> I don't know what that is :x. my `myRmv "apple" 'a'` returns "pple"
19:46:12 <EvanR> not exactly a strenuous test
19:46:15 <[itchyjunk]> in case of `myRemove` i want `myRemove "apple" "ap"` to return "le"
19:46:22 × remexre quits (~remexre@user/remexre) (Remote host closed the connection)
19:46:35 <EvanR> what about "apapalaea" 'a'
19:46:36 <[itchyjunk]> I am getting a "non exhaustive patters for go" as an error currently
19:46:37 remexre joins (~remexre@user/remexre)
19:46:45 <[itchyjunk]> it reutnrs pple
19:46:52 <EvanR> cool
19:47:04 <[itchyjunk]> *Main> myRmv "apapalaea" 'a'
19:47:04 <[itchyjunk]> "pple"
19:47:20 <[itchyjunk]> This is why i am thinking my issue is with the go and/or myRemove function
19:47:47 <[itchyjunk]> Maybe i am just missing some base case i need to address
19:47:49 <int-e> > "applesauce" \\ "cause"
19:47:51 <lambdabot> "pplae"
19:47:51 <hololeap> [itchyjunk]: you'll have to scan the first list for every letter in the second list. your blah function really should have the signature: blah :: String -> Char -> String -> String
19:48:03 <[itchyjunk]> "*** Exception: myRemove.hs:8:1-42: Non-exhaustive patterns in function go
19:48:12 <int-e> oh right, that does this odd multiset difference thing
19:48:34 <[itchyjunk]> hololeap, that's my `go` signature
19:49:03 <hololeap> true, but I fail to see your point
19:49:21 <[exa]> [itchyjunk]: `go` can't handle the end case with empty list
19:50:02 <[itchyjunk]> hmm go gets 2 lists and hmmmmm
19:50:16 [itchyjunk] can't seem to handle the case with empty list either
19:50:57 <[itchyjunk]> ah
19:52:43 <[exa]> [itchyjunk]: what about doing it the other way, running through the string and allowing letters through only if they are not in the list of forbidden letters?
19:52:57 <[exa]> (sounds a bit more like foldr to me)
19:53:06 <hololeap> hopefully this isn't too close to giving away the answer, but
19:53:11 <hololeap> > blah :: String -> Char -> String -> String ; blah s0 c s = if any (== c) s0 then s else c:s
19:53:12 <lambdabot> <hint>:1:44: error: parse error on input ‘;’
19:53:19 <hololeap> % blah :: String -> Char -> String -> String ; blah s0 c s = if any (== c) s0 then s else c:s
19:53:20 <yahb> hololeap:
19:53:28 <EvanR> if you write filter with foldr, and elems with foldr, and combine them, you technically used foldr
19:53:33 <EvanR> er, elem
19:53:38 <EvanR> :t elem
19:53:39 <lambdabot> (Foldable t, Eq a) => a -> t a -> Bool
19:53:42 <EvanR> bah
19:53:46 <[exa]> it's very foldy, yes
19:54:02 <geekosaur> % :t elem @[]
19:54:02 <yahb> geekosaur: Eq a => a -> [a] -> Bool
19:54:17 <[exa]> [itchyjunk]: if I get the code correctly, the thing you are doing now is kinda headed towards foldl
19:55:05 <[itchyjunk]> hmm
19:56:12 <[itchyjunk]> go [] y ys = y:ys
19:56:27 <[itchyjunk]> if the list of things to removee is empty, just accumulate y into the accumulator, no?
19:56:40 × nhatanh02 quits (~satori@123.24.172.30) (Ping timeout: 256 seconds)
19:56:42 <hololeap> aren't you supposed to use foldr?
19:56:57 <[itchyjunk]> yes i am using foldr
19:57:48 <EvanR> you're using recursion
19:58:01 <EvanR> maybe the problem should have said, use foldr and not recursion
19:58:10 <[exa]> +1 ^
19:58:15 <[itchyjunk]> https://bpa.st/PWZA
19:58:19 <hololeap> % foldr (:) "" "abcd"
19:58:19 <yahb> hololeap: "abcd"
19:58:28 <[itchyjunk]> oh i should be doing this without recursion?
19:58:34 <hololeap> foldr is already building the list back in the correct direction
19:58:35 <[exa]> likely
19:58:35 <EvanR> foldr is all you need
19:58:37 ouestbillie joins (~gallup@142.169.33.81)
19:58:41 <[itchyjunk]> hmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
19:58:49 <[itchyjunk]> maybe i will just start over then
19:58:54 <EvanR> though likely to only 1 foldr
19:58:58 <EvanR> NOT only 1
19:59:16 × ouestbillie quits (~gallup@142.169.33.81) (Client Quit)
19:59:25 × moshet quits (~moshet@179.33.156.20) (Ping timeout: 240 seconds)
19:59:33 ouestbillie joins (~gallup@142.169.33.81)
19:59:53 <[itchyjunk]> yup, this is too convoluted for my own good. From scratch!
20:00:03 <[exa]> [itchyjunk]: if you get "ap" and "apple", imagine the problem as solving a small instance ('a':"pple") and deciding whether to return the whole thing or just continue with the result of processing "pple"
20:01:33 <[itchyjunk]> well i wanna take 'a' from "ap" and go through each char of "apple" and see if there is a 'a' in that list. then do the same with 'p' i think?
20:01:43 <[exa]> that's foldl
20:01:46 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds)
20:01:49 <[itchyjunk]> @_@
20:01:59 <[exa]> because you can't produce the result by tiny bits
20:02:03 <[itchyjunk]> hmmm
20:02:16 <[exa]> do it the other way, take 'a' from apple and decide if you can send it to output or not
20:03:01 <[itchyjunk]> interesting.. guess i don't really understand foldr vs foldl very well. okay, get 'a' from "apple" and make a decision. i'll try this
20:03:16 <EvanR> "see if x is in list" with foldr is fine
20:03:28 <EvanR> then you can cancel early if it is
20:03:38 <hololeap> foldr naturally builds the new list in the correct direction. you only have to use (:), not (++)
20:04:24 <[exa]> the question is "can you produce partial output"? with recursing over the string, you can decide that "l" will be a part of output before processing the final "l". With recursing over the forbidden characters, you are never sure your output isn't going to get erased by the next forbidden character
20:04:43 <[exa]> * the final "e"
20:05:10 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:05:21 <hololeap> [itchyjunk]: for starters try to implement filter with foldr. that will get you most of the way to your answer
20:05:25 <hololeap> :t filter
20:05:26 <lambdabot> (a -> Bool) -> [a] -> [a]
20:05:35 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 256 seconds)
20:05:46 <[itchyjunk]> oh okay. implement filter with foldr it is then
20:06:31 <EvanR> someone was asking if the answer to a Bool question can return partial output? xD
20:07:00 <[itchyjunk]> Maybe true / Maybe false
20:07:07 <EvanR> file not found
20:07:13 <hpc> EvanR: :D
20:07:49 <[exa]> data Bool' = False | True | :¯\_(ツ)_/¯
20:07:50 juhp joins (~juhp@128.106.188.82)
20:09:21 <hpc> fun fact, https://thedailywtf.com/articles/What_Is_Truth_0x3f_ is 17 years old
20:10:41 × ouestbillie quits (~gallup@142.169.33.81) (Read error: Connection reset by peer)
20:14:15 × kronicma1 quits (user76545@neotame.csclub.uwaterloo.ca) (Ping timeout: 250 seconds)
20:14:44 <EvanR> old enough to die for your country but not old enough to drink
20:14:50 <EvanR> sorry wrong channel
20:15:34 ouestbillie joins (~gallup@modemcable053.204-20-96.mc.videotron.ca)
20:15:57 kronicma1 joins (user27604@neotame.csclub.uwaterloo.ca)
20:16:37 roboguy joins (~roboguy@user/roboguy)
20:17:04 <[itchyjunk]> It seems to work? https://bpa.st/C4UQ
20:17:17 <[itchyjunk]> wait
20:17:27 <[itchyjunk]> wth, i never used foldr..
20:17:32 <[itchyjunk]> what am i doing? xD
20:17:46 <[exa]> [itchyjunk]: yeah now transform to foldr
20:17:49 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
20:18:55 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
20:19:17 <EvanR> you can basically write any function on List with foldr
20:20:29 <hpc> not just basically, you actually can
20:24:38 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:24:52 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
20:24:52 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
20:24:52 wroathe joins (~wroathe@user/wroathe)
20:27:56 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
20:31:14 Guest80 joins (~Guest80@p200300d5572443000b6ab41968a4cb33.dip0.t-ipconnect.de)
20:31:30 <[itchyjunk]> when i implement myFoldFilter using foldr, myFoldFilter :: (a -> Bool) -> [a] -> [a] right?
20:31:50 <[itchyjunk]> the signature my the filter function made with foldr would be the same?
20:33:44 <polyphem> [itchyjunk]: yes
20:34:19 <EvanR> same store front, different back office
20:34:27 ouestbil1ie joins (~gallup@142.169.33.81)
20:34:36 <[itchyjunk]> lol
20:34:55 <ephemient> > let f a k (b:bs) = (a, b) : k bs; f _ _ _ = [] in foldr f (const []) ['a'..] [1..] -- just experimenting out of curiosity. if there's a way to define `f` in terms of `foldr` it's not obvious to me
20:34:56 <lambdabot> [('a',1),('b',2),('c',3),('d',4),('e',5),('f',6),('g',7),('h',8),('i',9),('j...
20:35:03 <[itchyjunk]> i need to massage the (a -> Bool) to soemthing that works with (a -> b -> b)
20:35:39 × s2k quits (~textual@122.172.234.134) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:35:49 <EvanR> or just us the (a -> Bool) in the lambda
20:35:53 <EvanR> use
20:36:09 jakalx joins (~jakalx@base.jakalx.net)
20:36:40 × Guest80 quits (~Guest80@p200300d5572443000b6ab41968a4cb33.dip0.t-ipconnect.de) (Quit: Client closed)
20:39:10 <EvanR> style question
20:39:38 × ouestbillie quits (~gallup@modemcable053.204-20-96.mc.videotron.ca) (Quit: Lost terminal)
20:39:45 <EvanR> according to my flawless proof and understand of this algorithm, the list returned by my IO action will be empty. If it isn't, something is very wrong. So
20:39:56 <EvanR> also there's a warning for ignoring the result in do notation
20:40:30 <EvanR> do { [] <- myAction; ... carry on } -- if I do this, I appease the warning and dare my proof and understanding to be right. Good idea?
20:40:50 <geekosaur> probably a good idea to test that understanding, yes
20:40:52 <EvanR> or what's another way to deal with it
20:41:08 <geekosaur> although I might prefer to capture the output and print what I got if it wasn't empty
20:41:12 nattiestnate joins (~nate@2001:448a:20a0:4134:25e:715f:d637:5263)
20:41:25 <geekosaur> help me figure out what I got wrong
20:41:28 <EvanR> ah
20:42:15 <int-e> > let f a k = fst . foldr (\b ~(_, bs) -> ((a, b) : k bs, b : bs)) ([],[]) in foldr f (const []) ['a'..] [1..] -- ephemient
20:42:17 <lambdabot> [('a',1),('b',2),('c',3),('d',4),('e',5),('f',6),('g',7),('h',8),('i',9),('j...
20:42:28 × nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Client Quit)
20:42:31 <int-e> ephemient: it's quite awkward though
20:42:47 <EvanR> I've had advice in the past to not do something like this, so the program has a chance of continuing on despite some horrible error having happened (in writing the code)
20:43:10 <geekosaur> nowhere in there did I hear "is a good idea" with respect to writing everything with foldr :)
20:43:29 koalillo joins (~koalillo@2a0c:5a81:b804:9900:6f90:e8ce:c737:204c)
20:43:45 <ephemient> ah, the fst lets you select between the cases
20:43:49 <int-e> ephemient: and if you add a few more tweaks the code is likely to explode
20:43:50 <ephemient> that is pretty awkward
20:43:53 <geekosaur> EvanR, maybe. but too often ime that kind of logic is the logic of dynamic languages that silently deliver garbage
20:44:16 × ouestbil1ie quits (~gallup@142.169.33.81) (Ping timeout: 256 seconds)
20:45:10 <int-e> ephemient: note also the loss of sharing on `bs` (which becomes relevant if k actually uses it)
20:45:22 <EvanR> also, I wonder where "let it crash" fits into this
20:45:48 <c_wraith> "let it crash" is "we won't prevent garbage, but at least we won't propagate it"
20:46:30 <EvanR> this is kind of like, "not only let it crash, cause it to crash more"
20:47:54 <hpc> sometimes the most correct thing to do is be as wrong as possible
20:47:59 <EvanR> lol
20:48:01 Garbanzo joins (~Garbanzo@2602:304:6eac:dc10::46)
20:48:06 acidjnk joins (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de)
20:48:06 acidjnk_new joins (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de)
20:48:58 × ft quits (~ft@shell.chaostreff-dortmund.de) (Quit: leaving)
20:49:11 ft joins (~ft@shell.chaostreff-dortmund.de)
20:49:15 <[exa]> ah the good old full-scale crashes, absolute units of crashage.
20:50:12 <hololeap> [itchyjunk]: you'll need to use an if-then-else statement using your (a -> Bool) and the given a to get a -> [a] -> [a]
20:50:29 <Hecate> I deeply dislike MonadFail
20:51:12 <EvanR> oh ... this is MonadFail territory now, I forgot
20:51:19 <c_wraith> I'm happy with MonadFail as much better solution to pattern-match failures than putting "fail" in monad was
20:51:49 <Hecate> c_wraith: which instance of MonadFail do you use?
20:51:55 <Hecate> (I also deeply dislike fail)
20:52:22 <c_wraith> Mostly IO's, but I get some value out of []'s
20:55:10 <Hecate> c_wraith: any reason why you don't directly raise exceptions or empty lists?
20:55:41 <c_wraith> because the whole point of using a library is to not rewrite its code
20:59:03 <ephemient> myIOActionReturningHopefullyNullList >>= unless <$> null <*> fail . show -- ugly but it'll show the list in the IO exception…
20:59:11 zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
20:59:23 <int-e> > let foo :: (a -> b) -> [a] -> [b]; foo f [] = []; foo f (a:as) = f a : (foo (\a -> (f a, f a)) as >>= \(a,b) -> [a,b])
20:59:25 <lambdabot> <no location info>: error:
20:59:25 <lambdabot> not an expression: ‘let foo :: (a -> b) -> [a] -> [b]; foo f [] = []; fo...
20:59:32 <int-e> > let foo :: (a -> b) -> [a] -> [b]; foo f [] = []; foo f (a:as) = f a : (foo (\a -> (f a, f a)) as >>= \(a,b) -> [a,b]) in foo id [1..4]
20:59:34 <lambdabot> [1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]
21:00:22 <int-e> ephemient: ^^ another thing that will be awkward with foldr (because the type of f changes in the recursive calls)
21:00:55 <int-e> though one can probably make it work with an existential
21:01:52 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:02:33 hololeap_ joins (~hololeap@user/hololeap)
21:04:12 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
21:04:33 hololeap_ is now known as hololeap
21:04:40 <hololeap> it looks like my earlier question is a subset of how you can run multiple computations in parallel and only return the first one that completes. does anyone know? I'm skimming Marlow's book and I don't see it
21:05:23 <Rembane> hololeap: Doesn't the async library have a function for that? I might be misremembering.
21:05:32 <c_wraith> race handles two computations
21:05:51 <c_wraith> to handle multiples, you'd need to fold it
21:05:53 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:06:23 <hololeap> uh, yeah but can I run each computation using race on multiple cores?
21:06:49 <c_wraith> if you're using the threaded RTS with an approprate -N command line argument
21:06:53 <EvanR> if all the computations racing should agree in the sense of definedness there's lub
21:06:57 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Remote host closed the connection)
21:07:23 coot joins (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827)
21:09:27 <[itchyjunk]> wait i think the solution just came to me
21:09:39 koalillo parts (~koalillo@2a0c:5a81:b804:9900:6f90:e8ce:c737:204c) ()
21:09:47 <[itchyjunk]> is this a solution to implementing filter with foldr ? https://bpa.st/CPTA
21:09:55 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:10:00 <hololeap> EvanR: this is what I'm finding. is this it? https://hackage.haskell.org/package/ghc-8.10.2/docs/Demand.html#v:lubDmd
21:11:51 × coot quits (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Remote host closed the connection)
21:12:01 <hololeap> [itchyjunk]: sort of, but you're missing whatever comes after "else" in the go function
21:12:13 coot joins (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827)
21:12:33 <EvanR> https://hackage.haskell.org/package/lub
21:12:44 <[itchyjunk]> oh wtf
21:12:48 <[itchyjunk]> it was supposed to be else xs
21:12:50 <[itchyjunk]> :<
21:12:57 <hololeap> then yes, that is correct
21:13:41 <[itchyjunk]> https://bpa.st/HDDQ
21:13:44 <[itchyjunk]> ah okay
21:14:09 × coot quits (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Remote host closed the connection)
21:14:34 coot joins (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827)
21:17:08 × rito_ quits (~rito_gh@45.112.243.149) (Quit: Leaving)
21:18:00 <hololeap> EvanR: that looks interesting, although I'm not sure how to use it. (fib 10) `lub` (fib 999999999) -- I would want both computations to run in parallel and hopefully return (fib 10)
21:18:18 <EvanR> yeah no, lub is for when the values agree
21:18:48 <EvanR> rather, having a common "definedness upper bound", those two don't
21:19:32 <EvanR> in Async there are combinators for racing many threads
21:19:36 <hololeap> ok, so something using race from async then
21:22:01 <hololeap> but that introduces the IO monad. no way to do this on pure computations without IO coming in??
21:22:28 <int-e> @let data T a b = T { unT :: forall b'. (a -> b') -> ([b'] -> [b]) -> [b] }
21:22:29 <lambdabot> Defined.
21:22:36 <int-e> > let aux a (T as) = T (\f r -> as (\a -> (f a, f a)) (r . (f a :) . (>>= \(a,b) -> [a,b]))) in unT (foldr aux (T (\_ r -> r [])) [1..4]) id id
21:22:37 <lambdabot> [1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]
21:23:00 <int-e> (tricky)
21:23:15 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:24:03 <hololeap> is there an ST version of race?
21:24:58 <EvanR> you can use unsafePerformIO to do the race of threads doing a pure computation
21:24:59 <int-e> there's unsafeIOToST... and it is unsafe
21:25:34 <EvanR> though
21:25:38 <EvanR> the whole thing is not pure is it
21:25:43 geekosaur is wondering if that even makes sense
21:25:51 <EvanR> you "hope" fib 10 comes back, but there's no guaratantee
21:25:56 <EvanR> guarantee
21:26:17 <EvanR> it depends on real world circumstances
21:27:44 × roboguy quits (~roboguy@user/roboguy) ()
21:28:17 <hololeap> yeah I suppose it's getting into nondeterminism since it's unclear which one will come back first
21:29:40 <hololeap> so I guess IO actually makes sense here
21:29:44 <EvanR> that's why lub is cool because you can explain why it's still valid to race the threads xD
21:29:50 <EvanR> purely
21:30:55 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:31:11 <hololeap> the idea was to parallelize the branches of LogicT, where all successes from any branch are considered equal, and it just returns the first one it finds
21:32:01 <EvanR> if you can arrange for all results to be equal, then the referential transparency cops won't notice you
21:32:24 <EvanR> doing unsafePerformIO
21:32:26 <EvanR> hopefully
21:33:12 <hololeap> I think in this case any successes will actually be identical
21:33:46 <hololeap> I'm actually just playing around with this using 2021's AoC day 8 problem for practice
21:35:16 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
21:35:19 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
21:36:44 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
21:38:02 <hololeap> for instance if I get the input "ag" then I know this corresponds to the digit 1, but I don't know if 'a' corresponds to the 'c' segment and 'g' corresponds to the 'f' segment, or vice versa. since both have equal weight, why not run both in parallel and see which one finds an answer first
21:38:08 sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca)
21:39:01 <sonny> how do you use a parameter in a function defintion inside a lambda definition? foo bar = foldl \(bar x y z -> ...) ...
21:39:54 Pickchea joins (~private@user/pickchea)
21:40:02 × Pickchea quits (~private@user/pickchea) (Remote host closed the connection)
21:40:18 <jackson99> just use it, without putting it in the argument list
21:40:37 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
21:42:33 <hololeap> EvanR: now if my two branches are guaranteed to find the same value, but one may find it faster than the other, is that a good time to use lub?
21:43:24 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
21:44:04 <jackson99> > let mymap f xs = foldr (\x acc -> f x : acc) [] xs in mymap (*10) [1..5] -- sonny
21:44:06 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
21:44:06 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
21:44:06 wroathe joins (~wroathe@user/wroathe)
21:44:06 <lambdabot> [10,20,30,40,50]
21:44:29 <sonny> thanks
21:44:37 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
21:45:17 × zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
21:45:57 × shapr quits (~user@2601:7c0:c202:5190:232c:3331:7d0c:8370) (Ping timeout: 240 seconds)
21:47:43 <hololeap> @hoogle unamb -- ok this explains it a little better
21:47:44 <lambdabot> Prelude undefined :: forall (r :: RuntimeRep) . forall (a :: TYPE r) . HasCallStack => a
21:47:44 <lambdabot> Control.Exception.Base absentSumFieldError :: a
21:47:44 <lambdabot> Text.Printf errorShortFormat :: a
21:48:03 <hololeap> s/hoogle/hackage
21:48:11 <hololeap> @hackage unamb
21:48:11 <lambdabot> https://hackage.haskell.org/package/unamb
21:48:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
21:52:59 <sonny> is it actually possible to implement filter with fold?
21:53:47 <jackson99> sure
21:54:06 <sonny> I'm stumped because I can't think of some identity elment with :
21:54:42 <dolio> Identity element?
21:54:51 <geekosaur> you're just passing on xs instead of prepending an element to it (bool, or if-then-else)
21:54:54 <sonny> well some zero operation
21:55:09 <jackson99> it is a small change to the mymap I pasted above
21:55:20 <geekosaur> and no, (:) doesn;t have a left identity
21:55:44 <geekosaur> it's a constructor, it always constructs a value
21:55:57 × mvk quits (~mvk@2607:fea8:5cdd:f000::45db) (Ping timeout: 240 seconds)
21:56:07 <sonny> so it's not possible with foldl, but with foldr
21:56:21 <sonny> I was trying with foldl
21:56:24 modnar joins (~quassel@162.195.88.254)
21:56:47 <geekosaur> note thatyou can build foldl with foldr but not the reverse
21:58:23 <hololeap> % :t \f -> foldl (\s c -> if f c then s ++ [c] else s) []
21:58:23 <yahb> hololeap: Foldable t => (a -> Bool) -> t a -> [a]
21:59:04 <hololeap> it's possible but probably not as efficient
22:00:39 <sonny> ok, I really need to figure out cons and lists
22:00:41 mvk joins (~mvk@2607:fea8:5cdd:f000::45db)
22:01:14 <sonny> I think I sorta get fold
22:02:02 <hololeap> foldr is a natural outgrowth of how lists are constructed. foldr (:) [] == id
22:03:00 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Remote host closed the connection)
22:03:13 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
22:04:01 <hololeap> :t toList -- which is why you can convert any Foldable to a list
22:04:02 <lambdabot> Foldable t => t a -> [a]
22:06:53 <sonny> hololeap: [] is the second argument right?
22:07:43 × machinedgod quits (~machinedg@24.105.81.50) (Quit: Lost terminal)
22:07:44 <sonny> yes very useful observation `foldr (:) [] == id`
22:08:08 machinedgod joins (~machinedg@24.105.81.50)
22:10:31 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
22:10:36 <sonny> filter p = foldr (\x acc -> if p x then x:acc else acc) []
22:11:00 <sonny> I never get this much confidence elsewhere :D
22:11:46 <hololeap> well, technically, foldr (:) [] == toList
22:12:06 <geekosaur> these days :)
22:12:08 <sonny> I just read id as identity
22:12:33 <geekosaur> sometimes I wonder if Foldable is all it's cracked up to be, and not just because of that tuple instance
22:12:42 <ephemient> could also be foldr (\x -> if p x then (x:) else id) []
22:12:50 <hololeap> and toList == id, if we're specializing the Foldable to be []
22:13:06 × xff0x quits (~xff0x@2001:1a81:52d4:9900:4d46:915d:4480:7a51) (Remote host closed the connection)
22:13:23 xff0x joins (~xff0x@2001:1a81:52d4:9900:5627:62b8:c837:dd4a)
22:13:30 <sonny> ephemient: where's id from?
22:13:39 <geekosaur> @index id
22:13:39 <lambdabot> Control.Category, Data.Function, Prelude
22:13:40 <ephemient> :t id
22:13:41 <lambdabot> a -> a
22:13:46 <sonny> oh
22:14:23 <sonny> is that typical haskell code?
22:14:26 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:14:26 timCF joins (~timCF@m91-129-100-224.cust.tele2.ee)
22:14:37 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
22:14:37 <jackson99> @src id
22:14:37 <lambdabot> id x = x
22:14:51 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:14:58 <sonny> it's kinda magic when defined with the section :P
22:15:56 <timCF> Hello! Want to ask a question, which haskell build infrastructure is better - provided in nixpkgs or haskell.nix by IOHK and why?
22:16:57 <geekosaur> how about oen that doesn't involve nix at all?
22:18:23 Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
22:18:42 <timCF> I've used stack for a long time, but nix is kinda cool to manage external binary deps for building and testing
22:21:02 <geekosaur> "cool" for a thing with nightmarish tentacles…
22:21:34 <geekosaur> sorry, that thing just has too many moving pieces and sharp edges
22:21:42 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:23:03 <timCF> No worries) If it was perfect, i've not asked which one of two is better
22:23:27 <sm> there was a recent discussion of this on reddit. IIRC nixpkgs was easier for just installing haskell things, haskell.nix is more powerful for fine grained haskell project building
22:24:53 <geekosaur> I also don't like something that will silently consume gigabytes of space unless I remember to gc it every so often — but not too often as I may need to roll back an update
22:29:12 DNH joins (~DNH@2a02:8108:1100:16d8:c0bf:721a:fdec:b791)
22:29:33 <sonny> reverse = foldl (flip (:)) [] -- why does it have to be flipped?
22:30:11 ouestbillie joins (~gallup@192-222-138-215.qc.cable.ebox.net)
22:30:27 <hololeap> because foldl takes (b -> a -> b) as opposed to (a -> b -> b)
22:30:37 BrokenClutch joins (~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e)
22:31:26 <geekosaur> > foldl f z [a,b,c]
22:31:27 <lambdabot> f (f (f z a) b) c
22:31:28 sonny tries to parse the signature
22:31:39 <geekosaur> > foldr f z [a,b,c]
22:31:41 <lambdabot> f a (f b (f c z))
22:31:52 deadmarshal joins (~deadmarsh@95.38.231.124)
22:32:24 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:32:42 shapr joins (~user@2601:7c0:c202:5190:ed4f:33d2:c7d1:3eb)
22:32:56 <jackson99> position of the current element and accumulator arguments are flipped in function accepted by foldr vs foldl
22:33:45 <sonny> ok, I'm just gonna guess it's defined differently in scheme. I'm comparing them and I got lost
22:34:24 <geekosaur> yes, many languages make different decisions. look at the unrolling of the folds I asked the bot for to see why haskell defines it the way it does
22:34:43 <geekosaur> (it's basically a matter of associativity)
22:35:55 <sonny> associativity is order? don't remember
22:36:17 <BrokenClutch> Is it? I think it's the same definition
22:36:28 × deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds)
22:36:57 <geekosaur> associativity is left vs. right, is a * b * c the same as (a * b) * c or is it a * (b * c)
22:37:03 <geekosaur> for some operator *
22:38:04 <geekosaur> so foldl is a left-associative fold, foldr a right-associative fold
22:38:23 <geekosaur> lists are right-associative, which is why foldr is effectively an identity for lists
22:38:37 <sonny> BrokenClutch: you can check here https://srfi.schemers.org/srfi-1/srfi-1.html#FoldUnfoldMap
22:39:33 <ephemient> it's clearer to see with an infix function: foldr (+) z [a, b, c] = a + (b + (c + z)), foldl (+) z [a, b, c] = ((z + a) + b) + c
22:41:31 <sonny> ok, I'll come back later. My brain is fried
22:41:34 <jackson99> and even clearer if the function is -, because then you will get different result
22:43:15 × sonny quits (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Remote host closed the connection)
22:43:34 sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca)
22:48:13 <sonny> geekosaur: so they wanted to avoid (f (f (f z a) b) c)?
22:50:31 <geekosaur> I don't quite understand the question
22:50:35 qrpnxz joins (abc4f95c31@user/qrpnxz)
22:50:59 <geekosaur> My point is that (:) right-associates and doesn't take its parameters in the left-associative order
22:51:02 <sonny> just thinking about the order
22:51:25 <geekosaur> some things are naturally left-associative, some aren't
22:52:17 <geekosaur> so Foldable gives us foldr and foldl, but also foldMap which is allowed to associate naturally for the Foldable in question iirc
22:52:55 <geekosaur> (:) is also asymmetric, which is another part of the problem
22:53:15 <geekosaur> it doesn't take the same type on both sides, so it doesn't "re-associate" cleanly
22:53:32 <geekosaur> something like (+) can associate either way
22:54:22 <sonny> yeah
23:00:40 × sonny quits (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Remote host closed the connection)
23:00:59 sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca)
23:02:27 × danso quits (~danso@d67-193-121-2.home3.cgocable.net) (Ping timeout: 268 seconds)
23:02:51 danso joins (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
23:03:30 × juri_ quits (~juri@178.63.35.222) (Ping timeout: 260 seconds)
23:04:37 <BrokenClutch> I must be dumb, they look the same to me
23:06:18 <dibblego> > ((10 - 9) - 21)
23:06:19 <lambdabot> -20
23:06:20 azimut joins (~azimut@gateway/tor-sasl/azimut)
23:06:25 <dibblego> > (10 - (9 - 21))
23:06:26 <lambdabot> 22
23:06:32 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:07:01 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
23:07:16 <geekosaur> you won't be able to tell with (+) because it does the same thing with either associativity
23:07:32 <geekosaur> (-) shows it better, as dibblego demonstrated
23:08:12 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
23:08:13 <BrokenClutch> No, this part and actually knows
23:08:24 <BrokenClutch> I was talking about the scheme definition
23:08:28 <BrokenClutch> looks the same to me
23:08:45 <geekosaur> scheme defines them all taking the same parameters the same way, for consistency
23:08:52 × little_mac quits (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) (Remote host closed the connection)
23:09:09 <geekosaur> haskell flips things for mathematical consistency instead of programmatic
23:09:40 <geekosaur> it's harder to demonstrate the things I showed earlier with the scheme definitions of fold and fold-right, vs. Haskell foldl/foldr
23:10:54 × hololeap quits (~hololeap@user/hololeap) (Quit: Bye)
23:12:48 <Axman6> foldr is "Replace all :'s with f, and any [] with z". Foldl is "given a starting value, pass in each element of the list to f to use as the starting value, until you find a []"
23:13:18 <BrokenClutch> but like, the scheme one looks the same as the haskell one
23:13:27 <BrokenClutch> I'm trying to see the difference, but i don't got it
23:13:35 <Axman6> link to the scheme one?
23:13:45 <BrokenClutch> https://srfi.schemers.org/srfi-1/srfi-1.html#FoldUnfoldMap
23:14:16 <BrokenClutch> Is it after the compilation? Like, how scheme changes foldr to a c-loop on most compilers/transpillers?
23:14:21 <geekosaur> is there supposed to be one, aside from parameter order (the "z" coming first instead of second)
23:14:24 <geekosaur> ?
23:15:03 × coot quits (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Quit: coot)
23:15:37 <Axman6> (fold kons (kons (car lis) knil) (cdr lis)) clearly isn't the same as (kons (car lis) (fold-right kons knil (cdr lis)))
23:15:46 × notzmv quits (~zmv@user/notzmv) (Read error: Connection reset by peer)
23:16:33 <BrokenClutch> I'm not comparing foldl to foldr
23:16:43 <Axman6> ok
23:16:48 <BrokenClutch> I'm comparing scheme's foldl to haskell's foldl
23:17:53 notzmv joins (~zmv@user/notzmv)
23:17:56 <Axman6> they are identical, apart from the order of the arguments to f/kons
23:19:02 lavaman joins (~lavaman@98.38.249.169)
23:19:38 <Axman6> myFoldl :: (b -> a -> b) -> b -> [a] -> b; myFoldl kons knil (car:cdr) = myFoldl kons (kons car knil) cdr; myFoldl kons knil [] = knil
23:19:54 <BrokenClutch> the problem is with the order
23:20:07 <BrokenClutch> scheme is eager, so it solves the last part first
23:20:29 <BrokenClutch> while haskell will do a more "accumulative" approach, because it's lazy
23:22:16 justsomeguy joins (~justsomeg@user/justsomeguy)
23:22:34 <BrokenClutch> like, do the foldl expansion with scheme and evaluate it. It works diffently with haskell, you gonna be evaluating the thunks
23:23:21 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
23:23:32 <Axman6> > foldl f z [1,2,3] :: Expr -- This is exactly what foldl evaluates. the compiler may notice this should be strict depending on what f is
23:23:33 <lambdabot> f (f (f z 1) 2) 3
23:23:38 <EvanR> sonny, the foldl argument order seems more familiar, and makes sense since this is usually how you fold in other languages. given your accum, smush the next thing in the list into it
23:23:50 <EvanR> foldr is backwards
23:23:57 <EvanR> but it also makes sense
23:24:04 <Axman6> foldr is constructor replacement, foldl is a loop
23:24:26 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
23:24:49 <BrokenClutch> Oh, i was wrong
23:24:49 <EvanR> in foldr, you have the list element itself, not the accum, and the rest of the fold is on the right (all of the above assuming we work left to right)
23:24:52 <BrokenClutch> I got it now
23:25:17 <Axman6> there is no difference betqeen scheme's fold and haskell's foldl. there is a big difference between foldr and fold-right though
23:25:39 <EvanR> only recently I realized how "normal" foldl is xD
23:25:46 <EvanR> just haskell does it weird
23:26:00 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
23:26:42 <hpc> funny, foldr feels more natural to me
23:26:54 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
23:26:55 <EvanR> stockholm syndrome
23:27:07 <hpc> glasgow syndrom?
23:27:10 <BrokenClutch> like, I think the order of the arguments of the last f is flipped
23:27:18 <EvanR> by normal I mean relative to normal programming outside haskell land
23:27:19 <BrokenClutch> with scheme's foldl
23:27:26 <Axman6> yes, but that's not really important, they're isomorphic
23:28:31 <BrokenClutch> actually, i don't think they are flipped at all
23:28:45 <BrokenClutch> man, i got confused
23:28:47 <Axman6> :t foldl
23:28:47 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
23:29:04 <Axman6> they are flipped
23:29:17 <Axman6> scheme's fold is (a -> b -> b) -> b -> [a] -> b
23:29:29 <Axman6> because the accumulator is passed as the second argument
23:30:10 <BrokenClutch> you are right
23:30:11 <BrokenClutch> thanks
23:30:18 <BrokenClutch> man, never noticed that
23:30:24 <EvanR> you can't use "frequency analysis" to decide which order to use since... both arguments change every step
23:30:31 ChanServ sets mode +o Axman6
23:30:36 <Axman6> D:B
23:30:43 shapr grins evilly
23:30:52 <EvanR> so gotta dig deeper in the metaphor drawer
23:31:00 <Axman6> I have been given great power!
23:31:01 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
23:31:09 <Axman6> I am not ready for this responsibility!
23:31:24 <shapr> you can handle the power!
23:32:04 <EvanR> BrokenClutch, also the expansions lambdabot spits out skips over any operational issues so, looking at those doesn't make performance clear
23:33:03 <EvanR> an infinitely nested application of f could work fine in haskell, but foldl on list doesn't give you that immediately, unfortunately
23:33:18 <ephemient> beyond the argument order, fold in Scheme is also closer to foldl' in Haskell in terms of how it's evaluated, since it's strict in the accumulator
23:34:05 <BrokenClutch> :t foldl'
23:34:06 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
23:34:31 <BrokenClutch> ?????
23:34:37 <EvanR> evaluates the b eagerly, as you go
23:36:05 <BrokenClutch> ok, I will put this on my list of things I have to study
23:36:16 <BrokenClutch> or I'm going to break
23:37:00 <geekosaur> % :t foldl' @[]
23:37:00 <yahb> geekosaur: (b -> a -> b) -> b -> [a] -> b
23:37:41 <EvanR> oh right... I'm starting to not be annoyed by all the Foldable stuff and just see "list, tree, sequence" matrix style
23:40:26 <Axman6> BrokenClutch: you can probably ignore Foldable for now, but it just means "the class of things which you can write foldl and foldr for", turns out it's useful for more than lists
23:40:41 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
23:43:31 <ephemient> you can think of foldr on a foldable as equivalent to foldr on the toList of the foldable, can't you?
23:43:38 hololeap joins (~hololeap@user/hololeap)
23:43:49 <monochrom> Yes.
23:43:50 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
23:44:01 <EvanR> that's how it should be implemented
23:45:40 <geekosaur> that's the default if an instance doesn't define its own
23:47:45 <monochrom> I explain Foldable by putting foldMap at the spot light, not foldl or foldr. It formalizes "aggregate queries" (if you have heard of that wording from SQL) and is why sum, product, maximum, minimum, length are all in the same type class.
23:47:49 × max22- quits (~maxime@2a01cb0883359800fc4f47b740d6e929.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:48:07 × Kaiepi quits (~Kaiepi@156.34.47.253) (Quit: Leaving)
23:48:18 <monochrom> And yes monoids strike again.
23:48:57 × CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
23:49:01 <EvanR> :t foldMap
23:49:02 <lambdabot> (Foldable t, Monoid m) => (a -> m) -> t a -> m
23:49:05 <geekosaur> monoids are the secret master sof the universe
23:49:24 <c_wraith> I'm really unhappy with how Foldable is documented
23:49:36 <c_wraith> I tried to argue against it when they were designing it
23:49:47 <c_wraith> and was told that convenient lies are better than complicated truth
23:50:01 <c_wraith> (when they were designing the new documentation, that is)
23:50:11 <Axman6> what would you want it to say?
23:50:29 <c_wraith> foldMap' is described as a left fold, which is entirely wrong
23:50:44 <Axman6> Surely we can have "Intuitive understanding" and "How it actually works" sections in the docs
23:50:52 <c_wraith> it should be whatever fold gives it the strictness properties that are desired
23:51:11 <c_wraith> a right fold, a left fold, a tree fold. whatever.
23:51:31 <c_wraith> The important part is that it doesn't accumulate thunks
23:51:44 <monochrom> In this case the "complicated" truth is not harder than the convenient lie.
23:52:02 <dolio> Presumably it seqs a bunch of children when combining them or something?
23:52:42 <EvanR> more like what are foldMap amd foldMap' supposed to be
23:52:46 <geekosaur> uh. "convenient lies are better than the complicated truth?" that's pretty much the last thing I want in API docs
23:52:59 <monochrom> Especially if I troll with "data SnocList a = Nil | Snoc (SnocList a) a" then it is right-fold that can be made efficient.
23:53:04 <c_wraith> This is why I argued the new docs are really bad
23:53:54 <monochrom> Well yeah there are a lot of people, mostly millenials, who mistake API docs for free tutorials.
23:54:14 <monochrom> Because millenials are used to free tutorials.
23:54:17 <dolio> I can buy that sometimes not being absolutely precise can be more useful for developing an understanding. But it's hard to see why saying it's like foldl is helpful.
23:54:24 <c_wraith> why blame millenials? I assure you, I see that problem very broadly. :P
23:55:10 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
23:55:21 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
23:55:21 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
23:55:21 wroathe joins (~wroathe@user/wroathe)
23:55:34 <dolio> It doesn't actually seem like a convenient lie.
23:56:18 <c_wraith> the people I was complaining to thought it was basically always true and I was just being contrarian by pointing out all the cases where it wasn't
23:56:59 <geekosaur> *headwall*
23:57:21 <dolio> What cases is it true for?
23:57:34 <c_wraith> things shaped like []
23:58:20 <c_wraith> including the same implied ordering
23:58:52 <dibblego> yu
23:59:49 <dolio> What does it mean for `null` to be left associative?
23:59:56 <dibblego> sorry ^

All times are in UTC on 2022-01-09.