Home liberachat/#haskell: Logs Calendar

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

00:04:52 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Quit: ZNC 1.8.2 - https://znc.in)
00:07:48 × phma quits (phma@2001:0:c38c:c38c:3cee:b989:bcd3:2f3d) (Ping timeout: 255 seconds)
00:07:50 phma_ joins (phma@2001:5b0:211f:1178:dd66:934e:c06f:5919)
00:10:14 × Null_A quits (~null_a@2601:645:8700:2290:a961:38e5:e25d:7cd0) ()
00:10:17 phma_ is now known as phma
00:11:34 machinedgod joins (~machinedg@24.105.81.50)
00:13:19 yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
00:14:33 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
00:15:38 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:18:21 <dminuoso> Mmm. Im doing an URL style percent encoding/decoding of bytestring. I have two Word8 and want to prepend them to a ByteString, what's the efficient way to do this here?
00:19:32 <Axman6> I would have a look at the bytestring-base16 code to find efficient ways to do things. otherwise I'd probably just say use a builder if it's likely you'll be doing more appends/prepends
00:21:33 <dminuoso> I was thinking along the lines of: let dualton c1 c2 = unsafeCreate 2 $ \p -> poke p c1 >> poke (p `plusPtr` 1) c2 in dualton x1 x2 <> rest
00:21:45 <dminuoso> Axman6: Mmm.
00:22:10 <dminuoso> Ah, yes. Perhaps that is the better way indeed
00:22:57 <Axman6> if you know exactly how large the result will be there's definitely tricks to make it fast, but usually if the question is ')how do I construct a bytestring from parts" the answer is Builder
00:23:52 × smtnet3 quits (~asdfasdfa@202.36.244.28) (Quit: Leaving)
00:26:36 <dminuoso> Mmm, so on the outside Im inside conduit. Maybe there's a way to stream a bytestring builder into a conduit
00:27:21 <dminuoso> Apparently not, but that's fine
00:28:03 zebrag joins (~chris@user/zebrag)
00:29:03 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
00:29:46 <dminuoso> @tell burnsidesLlama It just occured to me, that the generalization you are looking for is `scanl` or `scanr`.
00:29:46 <lambdabot> Consider it noted.
00:32:22 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
00:32:42 × Atum_ quits (~IRC@user/atum/x-2392232) (Ping timeout: 240 seconds)
00:36:38 <Axman6> dminuoso: using https://hackage.haskell.org/package/bytestring-0.11.1.0/docs/Data-ByteString-Builder-Internal.html#t:ChunkIOStream you can efficiently stream a bytestring
00:40:20 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
00:41:38 <Axman6> ... maybe, actually struggling to see how to take in Builders and then use that
00:42:41 Ttech is now known as Adran
00:44:42 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
00:44:52 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
00:45:00 hughjfchen[m] joins (~hughjfche@2001:470:69fc:105::c29d)
00:56:24 Erutuon joins (~Erutuon@user/erutuon)
00:58:05 × Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa)
01:02:47 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
01:02:53 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
01:03:36 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
01:05:00 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
01:07:59 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
01:12:16 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:17:26 enemeth79 joins (uid309041@id-309041.tooting.irccloud.com)
01:18:37 meinside_ joins (uid24933@id-24933.brockwell.irccloud.com)
01:19:00 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
01:23:09 × xff0x_ quits (~xff0x@2001:1a81:525b:ea00:e4bc:612d:f531:cac7) (Ping timeout: 250 seconds)
01:25:10 xff0x_ joins (~xff0x@2001:1a81:5299:ea00:490d:5ed2:61e8:145d)
01:25:57 dre joins (~dre@2001:8003:c932:c301:e078:5df6:bd54:b22a)
01:27:39 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
01:29:29 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
01:29:53 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
01:34:53 derelict joins (~derelict@user/derelict)
01:40:35 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
01:43:32 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
01:44:08 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
01:44:15 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
01:46:21 × ph88^ quits (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) (Ping timeout: 255 seconds)
01:47:15 × smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
01:49:14 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
01:49:50 × shailangsa quits (~shailangs@host86-145-14-107.range86-145.btcentralplus.com) (Ping timeout: 268 seconds)
01:50:40 × yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
01:51:56 × alx741 quits (~alx741@186.178.109.120) (Quit: alx741)
02:00:19 yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
02:01:24 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
02:01:46 ph88^ joins (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c)
02:06:20 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
02:11:02 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
02:12:38 × td_ quits (~td@muedsl-82-207-238-204.citykom.de) (Ping timeout: 258 seconds)
02:13:52 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
02:14:20 td_ joins (~td@muedsl-82-207-238-108.citykom.de)
02:15:11 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:15:11 FinnElija is now known as Guest3119
02:15:11 × Guest3119 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (strontium.libera.chat (Nickname regained by services)))
02:15:11 finn_elija is now known as FinnElija
02:16:58 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
02:17:07 cheater joins (~Username@user/cheater)
02:19:23 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:20:15 h98 joins (~h98@187.83.249.216.dyn.smithville.net)
02:25:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:25:58 shailangsa joins (~shailangs@host86-186-191-14.range86-186.btcentralplus.com)
02:29:18 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
02:35:28 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
02:38:19 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
02:40:02 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
02:40:46 <dmj`> int-e: there is a patreon for GRIN work yes
02:41:13 <dmj`> Some of what I said is related to that
02:41:55 chris_ joins (~chris@81.96.113.213)
02:44:10 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
02:44:12 allbery_b joins (~geekosaur@xmonad/geekosaur)
02:44:57 allbery_b is now known as geekosaur
02:44:57 lavaman joins (~lavaman@98.38.249.169)
02:46:42 Erutuon joins (~Erutuon@user/erutuon)
02:49:10 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
02:52:27 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
02:56:57 × jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
02:59:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
03:00:51 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
03:01:41 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
03:02:35 vicfred joins (~vicfred@user/vicfred)
03:05:12 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
03:11:10 GeorgeArmani joins (~GeorgeArm@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
03:11:30 <GeorgeArmani> Can someone help me understand this error message ?
03:11:32 <GeorgeArmani> any' :: (a -> Bool) -> a -> Bool
03:11:32 <GeorgeArmani> any' f xs = foldl step False xs where
03:11:33 <GeorgeArmani> step acc (y:ys)
03:11:33 <GeorgeArmani> | f y = True
03:11:34 <GeorgeArmani> | otherwise = acc
03:11:41 <GeorgeArmani> Fold.hs:52:30: error:
03:11:42 <GeorgeArmani> • Occurs check: cannot construct the infinite type: a ~ t0 [a]
03:11:42 <GeorgeArmani> • In the third argument of ‘foldl’, namely ‘xs’
03:11:43 <GeorgeArmani> In the expression: foldl step False xs
03:11:43 <GeorgeArmani> In an equation for ‘any'’:
03:11:44 <GeorgeArmani> any' f xs
03:11:44 <GeorgeArmani> = foldl step False xs
03:11:45 <GeorgeArmani> where
03:11:45 <GeorgeArmani> step acc (y : ys)
03:11:46 <GeorgeArmani> | f y = True
03:11:46 <GeorgeArmani> | otherwise = acc
03:12:28 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
03:13:31 <geekosaur> please don't paste directly into the channel like that
03:13:32 <Axman6> @where paste
03:13:32 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
03:14:55 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
03:14:59 <geekosaur> but it's telling you that 'a' cannot at the same time be a Foldable over a list and an element of that list
03:15:15 <GeorgeArmani> https://paste.tomsmeding.com/qsfDJyUC#file-1
03:15:16 <Axman6> yeah take a close look at the type you've given any'
03:15:18 <geekosaur> think about your type signature
03:15:33 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
03:15:54 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
03:18:15 <geekosaur> it may also be helpful to give step the type signature you think it should have
03:18:30 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
03:19:23 peterhil joins (~peterhil@mobile-access-b04801-219.dhcp.inet.fi)
03:19:40 wei2912 joins (~wei2912@112.199.250.21)
03:24:01 × Guest152 quits (~acid@2a01:4f9:c010:898a::1) (Changing host)
03:24:01 Guest152 joins (~acid@user/acid)
03:24:13 Guest152 is now known as acid
03:26:28 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
03:26:39 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
03:26:41 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:27:01 × enemeth79 quits (uid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity)
03:30:00 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
03:33:40 Null_A joins (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d)
03:34:28 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
03:38:22 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
03:38:48 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
03:39:44 <GeorgeArmani> I'm really having a tough time sorting that out
03:41:22 <geekosaur> what does the type "a" in your type signature represent?
03:41:49 <geekosaur> remember that it's going to be the same type everywhere in that signature
03:43:29 <GeorgeArmani> I think it should be a list every time its used?
03:43:48 <geekosaur> is it in (a -> Bool)?
03:44:45 × TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8)
03:47:05 <GeorgeArmani> ahhhh so should it be ------- any' :: (a -> Bool) -> [a] -> Bool
03:47:15 <geekosaur> yes
03:49:09 <geekosaur> I suspect from your original error that this will only fix one problem, though
03:49:25 <GeorgeArmani> correct
03:49:39 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
03:50:45 <GeorgeArmani> In fact, I had that type signature originally but changed it to deal with this error https://paste.tomsmeding.com/ntGaaQnX
03:51:42 <GeorgeArmani> Wait just putting [xs] like that worked
03:52:05 <GeorgeArmani> https://paste.tomsmeding.com/qirkhcRw
03:52:10 <GeorgeArmani> Im not sure why though
03:53:26 × derelict quits (~derelict@user/derelict) (Ping timeout: 255 seconds)
03:54:20 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
03:55:08 <GeorgeArmani> I get it now. Thanks Geekosaur.
03:55:53 <geekosaur> yeh, you are splitting the list in step as well when you don't need to because fold already is
03:56:25 <geekosaur> so it thinks you need a list of lists. that's why I suggested putting a type signature on step
03:56:37 <GeorgeArmani> exactly, I deleted calling head in step and removed the [] around xs
03:56:58 × yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
04:00:50 lavaman joins (~lavaman@98.38.249.169)
04:04:03 <GeorgeArmani> Sorry for asking so many questions. I am confused about the type signature for step.
04:04:41 <GeorgeArmani> I thought it would be Bool -> a -> Bool , but it is throwing an error at compile
04:07:51 <h98> what's your code right now? that type signature sounds right to me
04:09:13 <GeorgeArmani> https://paste.tomsmeding.com/kU1zB95f
04:09:30 <geekosaur> oh, right, this requires ScopedTypeVariables to specify a signature
04:10:14 derelict joins (~derelict@user/derelict)
04:10:30 <geekosaur> otherwise the a you specify in the type signature for step is unrelated to the one specified for any', but that breaks f
04:10:31 <GeorgeArmani> Ok ill look into that
04:11:11 <geekosaur> sometimes ghc is annoying that way
04:11:22 <h98> should compile as-is if you delete the type signature now
04:11:42 <GeorgeArmani> ahhhh ok. That is a little frustrating.
04:12:04 <GeorgeArmani> yeah h98 thank you. I just wanted to make sure that I understood what was going on fully.
04:12:04 <geekosaur> yes, but I suggested adding the type signature, having forgotten it wouldn';t work :(
04:12:42 <GeorgeArmani> All good :) . Appreciate the help, Geekosaur.
04:13:42 benin03694 joins (~benin@106.198.95.190)
04:14:55 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
04:15:44 × benin0369 quits (~benin@183.82.204.23) (Ping timeout: 265 seconds)
04:15:44 benin03694 is now known as benin0369
04:16:57 falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
04:17:03 yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
04:18:59 benin03699 joins (~benin@183.82.205.17)
04:19:05 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
04:19:52 × Null_A quits (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) (Remote host closed the connection)
04:20:53 × benin0369 quits (~benin@106.198.95.190) (Ping timeout: 255 seconds)
04:20:53 benin03699 is now known as benin0369
04:26:42 oxide joins (~lambda@user/oxide)
04:27:51 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
04:30:06 × GeorgeArmani quits (~GeorgeArm@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed)
04:34:22 takuan joins (~takuan@178-116-218-225.access.telenet.be)
04:40:40 × Reyu[M] quits (~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
04:41:08 anandprabhu joins (anandprabh@gateway/vpn/airvpn/anandprabhu)
04:41:13 Reyu[M] joins (~reyureyuz@matrix.reyuzenfold.com)
04:41:45 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
04:42:03 geekosaur joins (~geekosaur@xmonad/geekosaur)
04:42:07 geekosaur is now known as brandon
04:45:02 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
04:45:13 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
04:47:58 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
04:48:36 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
04:52:56 <lechner> Hi, is it possible to catch decompression errors from LZMA here? https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L82
04:54:12 × yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
04:55:46 yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
04:56:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:00:01 × ChanServ quits (ChanServ@services.libera.chat) (shutting down)
05:00:04 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
05:00:24 × azeem quits (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Remote host closed the connection)
05:00:48 ChanServ joins (ChanServ@services.libera.chat)
05:00:48 cadmium.libera.chat sets mode +o ChanServ
05:01:39 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
05:04:00 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
05:04:32 lavaman joins (~lavaman@98.38.249.169)
05:04:55 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
05:07:10 × falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
05:10:48 <dsal> lechner: It uses MonadFail. You could use exceptions
05:10:52 <dsal> @package exceptions
05:10:53 <lambdabot> https://hackage.haskell.org/package/exceptions
05:12:06 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
05:14:28 MQ-17J joins (~MQ-17J@8.21.10.15)
05:20:27 Null_A joins (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d)
05:22:12 jneira joins (~jneira@212.8.115.226)
05:24:13 <Hecate> o/
05:24:26 <Hecate> I'm trying to better understand how I can use Comonad in my programs
05:25:04 <Hecate> I've seen *one* usage of Comonad in a codebase, in which it acted as a priviledged accessor, like https://twitter.com/TechnoEmpress/status/1416992128643776513
05:26:04 <Hecate> but I think the usecase really stops at running "whatever <- asks extract"
05:27:01 <Hecate> But then it feels more like I've created one more indirection
05:27:54 <Hecate> that being said if I need more polymorphism on the 'Comonad r' this could be good
05:30:15 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
05:30:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
05:32:05 <lechner> dsal: thanks!
05:32:57 × derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2)
05:41:00 Guest95 joins (~Guest95@50.47.115.102)
05:43:02 <Guest95> Hello! I currently use Spacemacs as my Haskell code editor. What code editor would you recommend? Is Yi worth looking in to?
05:43:24 × mthvedt quits (uid501949@id-501949.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
05:46:17 <Hecate> Guest95: Yi was an interesting project but I fear it may be dead these days
05:46:31 paolino joins (~paolo@84.33.141.5)
05:46:33 <Hecate> Guest95: I use neovim + lua plugins and config (if you're allergic to too much VimL)
05:46:34 Maxdamantus joins (~Maxdamant@user/maxdamantus)
05:50:41 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
05:53:15 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
05:54:12 × Null_A quits (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) (Read error: Connection reset by peer)
05:55:07 × dre quits (~dre@2001:8003:c932:c301:e078:5df6:bd54:b22a) (Quit: Leaving)
05:56:49 × Guest95 quits (~Guest95@50.47.115.102) (Quit: Client closed)
05:56:50 <lechner> Thanks for the pointer to yi. I may have found a minimal replacement for things like commit messages for mg, which is even less maintained and can't do Unicode
06:01:00 Erutuon joins (~Erutuon@user/erutuon)
06:03:17 × MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 268 seconds)
06:05:23 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
06:05:47 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
06:11:47 Guest55 joins (~Guest55@50.47.115.102)
06:15:07 dre joins (~dre@2001:8003:c932:c301:9820:d974:d4b6:d3c4)
06:26:24 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:26:43 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
06:31:22 vysn joins (~vysn@user/vysn)
06:32:22 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
06:34:39 ishutin joins (~ishutin@85-238-93-30.pool.digikabel.hu)
06:42:16 jjhoo_ is now known as jjhoo
06:42:55 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:47:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
06:48:33 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
06:50:26 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
06:51:31 × oxide quits (~lambda@user/oxide) (Read error: Connection reset by peer)
06:51:55 kuribas joins (~user@ptr-25vy0i7jsa6kv1vvjg7.18120a2.ip6.access.telenet.be)
06:57:17 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
06:57:39 chele joins (~chele@user/chele)
06:58:33 aman joins (~aman@user/aman)
06:59:05 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:00:27 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 255 seconds)
07:01:46 × aman quits (~aman@user/aman) (Client Quit)
07:02:56 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
07:05:33 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
07:07:25 Maxdamantus joins (~Maxdamant@user/maxdamantus)
07:08:04 fendor joins (~fendor@77.119.223.215.wireless.dyn.drei.com)
07:09:55 × h98 quits (~h98@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
07:11:38 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
07:12:29 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
07:16:41 KUrare joins (~KUrare@user/kurare)
07:16:55 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
07:17:05 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
07:17:13 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
07:20:52 × KUrare quits (~KUrare@user/kurare) (Ping timeout: 252 seconds)
07:21:03 × yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
07:24:54 smtnet3 joins (~asdfasdfa@202.36.244.28)
07:26:33 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
07:26:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:28:48 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
07:28:57 yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
07:30:35 hseg joins (~gesh@185.120.126.10)
07:31:11 × brandon quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
07:31:16 analognoise1 joins (~analognoi@2600:8801:8c26:9e00:cdb0:ec42:cea0:b1e2)
07:32:12 × analognoise quits (~analognoi@83.136.182.93) (Ping timeout: 245 seconds)
07:34:08 geekosaur joins (~geekosaur@xmonad/geekosaur)
07:34:12 geekosaur is now known as brandon
07:39:25 __monty__ joins (~toonn@user/toonn)
07:41:25 × Guest55 quits (~Guest55@50.47.115.102) (Ping timeout: 246 seconds)
07:41:32 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
07:41:47 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
07:44:33 × analognoise1 quits (~analognoi@2600:8801:8c26:9e00:cdb0:ec42:cea0:b1e2) (Ping timeout: 255 seconds)
07:47:15 × Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 255 seconds)
07:51:33 acidjnk joins (~acidjnk@p200300d0c72b9531f8c9d06c34eef88c.dip0.t-ipconnect.de)
07:57:11 × isekaijin quits (~pyon@user/pyon) (Quit: WeeChat 3.2)
07:59:29 × dre quits (~dre@2001:8003:c932:c301:9820:d974:d4b6:d3c4) (Quit: Leaving)
07:59:33 michalz joins (~michalz@185.246.204.55)
08:06:37 hendursa1 joins (~weechat@user/hendursaga)
08:09:39 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:11:35 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
08:12:29 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
08:17:32 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
08:17:34 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:20:06 × brandon quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 255 seconds)
08:24:49 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
08:28:39 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
08:30:00 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:31:05 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
08:31:17 Lord_of_Life_ is now known as Lord_of_Life
08:31:49 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds)
08:33:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
08:36:14 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
08:37:16 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
08:38:19 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
08:38:45 ChaiTRex joins (~ChaiTRex@user/chaitrex)
08:40:12 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
08:40:24 lavaman joins (~lavaman@98.38.249.169)
08:40:32 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
08:41:04 lavaman joins (~lavaman@98.38.249.169)
08:45:23 davros joins (~davros@host86-185-61-40.range86-185.btcentralplus.com)
08:47:17 guest719 joins (~user@49.5.6.87)
08:47:39 lars8 joins (~bc817c21@217.29.117.252)
08:48:19 <guest719> why `traverse` would immediatly exit when it meet a Left a?
08:48:51 <guest719> traverse (\i -> if odd i then Right () else Left i) [1..10]
08:49:42 <lars8> > traverse (\i -> if odd i then Right () else Left i) [1..10]
08:49:44 <lambdabot> Left 2
08:51:41 <lars8> > sequence [Left 1, Right 2]
08:51:42 <lambdabot> Left 1
08:51:46 <lars8> @src sequence
08:51:46 <lambdabot> sequence [] = return []
08:51:46 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
08:51:46 <lambdabot> --OR
08:51:46 <lambdabot> sequence xs = foldr (liftM2 (:)) (return []) xs
08:52:00 <lars8> does that help?
08:52:50 <lars8> traverse f is basically sequence . map f
08:53:22 <guest719> but why it meet Left a will early exit?
08:53:48 <lars8> because that's what liftM2 does
08:54:04 <guest719> @src liftM2
08:54:04 <lambdabot> liftM2 f m1 m2 = do
08:54:04 <lambdabot> x1 <- m1
08:54:05 <lambdabot> x2 <- m2
08:54:05 <lambdabot> return (f x1 x2)
08:54:23 <lars8> > liftM2 (+) (Right 1) (Right 2)
08:54:25 <lambdabot> Right 3
08:54:35 <lars8> > liftM2 (+) (Right 1) (Left 2)
08:54:36 <lambdabot> Left 2
08:54:48 <dminuoso> guest719: `Either a`, like `Maybe`, models computations with exceptions.
08:55:07 <dminuoso> So a `Left err` or `Nothing` has the same semantics as an exception, it shortcircuits the entire computation
08:55:12 <lars8> if any argument is Left, entire computation is Left
08:55:17 <guest719> oh, Left 2 will break the computation chain in >>=
08:55:21 <dminuoso> Yes.
08:55:52 <guest719> dminuoso and why it's that? define in >>= ?
08:55:55 <dminuoso> guest719: Yes.
08:56:26 <dminuoso> The applicative and monadic interface of `Maybe` and `Either s` simply models exceptions.
08:56:27 <guest719> dminuoso except Left a and Nothing, is there other would break computation chain?
08:56:30 <dminuoso> There's no deeper reason than that.
08:56:37 Erutuon joins (~Erutuon@user/erutuon)
08:56:39 <dminuoso> Sure there are others
08:56:46 <guest719> for examples?
08:57:06 <dminuoso> ExceptT
08:57:19 <dminuoso> Though that's just an `Either s` in disguise
08:57:36 <guest719> I can't help when you said Exception, I always think about run-time Exceptions
08:57:48 <dminuoso> Yes, these are pretty much like runtime exceptions!
08:57:51 <dminuoso> Consider:
08:57:53 <guest719> why haskell would give it another name
08:58:02 <dminuoso> These are value-level/user-defined exceptions
08:58:02 <guest719> wouldn't
08:58:38 <dminuoso> guest719: We also have regular RTS exceptions as you know them inside IO.
08:58:48 <dminuoso> But in pure computations it might still be useful to have shortcircuiting semantics
08:58:57 <dminuoso> Like with traverse.
08:59:18 <dminuoso> Say you have a tree, and you want to process each node - but in a way that if you generate an error at any, that the entire computation is considered failed.
08:59:46 <dminuoso> Then you can use `Maybe` or `Either s` (depending on whether you want to keep information about the error condition)
09:00:06 <dminuoso> Then producing `Nothing` is semantically equivalent to throwing an exception, except we can do this in pure code and without any special support from the runtime system.
09:00:20 <dminuoso> data Maybe a = Nothin | Just a
09:00:25 <dminuoso> instance Monad Maybe where ...
09:00:42 <dminuoso> Voila! You have created exception semantics on your own, no exception primitive support needed in the language.
09:01:23 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 265 seconds)
09:02:48 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
09:03:00 <albet70> can we think it as a failure computation?
09:03:37 <albet70> what about 1/0?
09:03:47 <albet70> 1/0 is an Exception?
09:04:05 <albet70> IO failure is an Exception?
09:05:09 <albet70> fmap (+1) Nothing would be an Exception?
09:05:30 <dminuoso> `Nothing` acts as an exception, yes.
09:05:55 <dminuoso> 1/0 is an interesting subject for several reasons
09:06:46 <dminuoso> % :t (1/0)
09:06:46 <yahb> dminuoso: ; <interactive>:1:3: error: Variable not in scope: (/) :: t0 -> t1 -> t
09:06:59 <dminuoso> % :q
09:06:59 <yahb> dminuoso:
09:07:00 <dminuoso> % :t (1/0)
09:07:01 <yahb> dminuoso: Fractional a => a
09:07:06 <dminuoso> % :i Fractional
09:07:08 <yahb> dminuoso: type Fractional :: * -> Constraint; class Num a => Fractional a where; (/) :: a -> a -> a; recip :: a -> a; fromRational :: Rational -> a; {-# MINIMAL fromRational, (recip | (/)) #-}; -- Defined in `GHC.Real'; instance Fractional a => Fractional (Identity a) -- Defined in `Data.Functor.Identity'; instance forall a k (b :: k). Fractional a => Fractional (Const a b) -- Defined in `Data.Functor.Co
09:07:19 <dminuoso> % :t (/)
09:07:20 <yahb> dminuoso: Fractional a => a -> a -> a
09:07:34 <dminuoso> albet70: ^- so you see, this is either Float or Double, at which point IEEE 754 semantics apply.
09:08:05 <dminuoso> Under which 1/0 is defined to be either positive or negative infinity (depending on the sign of 0)
09:08:26 <dminuoso> So 1/0 is actually a well defined value, perhaps unintuitively.
09:09:18 <dminuoso> But, what you probably meant is:
09:09:22 <dminuoso> % 1 `div` 0
09:09:22 <yahb> dminuoso: *** Exception: divide by zero
09:09:31 <dminuoso> % :t div
09:09:31 <yahb> dminuoso: Integral a => a -> a -> a
09:09:46 × Patternmaster quits (~georg@li1192-118.members.linode.com) (Ping timeout: 252 seconds)
09:09:58 Patternmaster joins (~georg@li1192-118.members.linode.com)
09:10:02 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
09:10:04 <albet70> yes, div 0
09:10:07 <dminuoso> albet70: ^- so yeah, this is a partial computation. We could have also made it non-partial and given it the type `div :: Integral a => a -> a -> Maybe a`, which produces Nothing for that case.
09:10:30 × jolly quits (~jolly@208.180.97.158) (Ping timeout: 252 seconds)
09:12:02 <dminuoso> albet70: In general, it's better to encode a failure as `Maybe` or `Either s` rather than producing an error (like div does)
09:12:34 <dminuoso> albet70: The reason is, you cant catch an `error` sensibly (its impossible in pure code, and you have imprecise error semantics if you try to do this from IO). error is really a sad part in Haskell.
09:12:55 <dminuoso> But you can catch a Nothing just fine (you just pattern match with case-of)
09:13:02 <dminuoso> Dont even need IO for that.
09:14:21 lavaman joins (~lavaman@98.38.249.169)
09:15:25 <albet70> but haskell does try catch to capture runtime errors like IO error
09:15:48 <albet70> and IO socket error, how to use Either to detect?
09:16:01 <dminuoso> haskell does not try and catch runtime errors at all
09:16:08 <dminuoso> They blow up your entire program
09:17:30 <dminuoso> You have to explicitly catch them in IO
09:17:44 <dminuoso> And it's subtly difficult to do this because of lazy evaluation
09:17:47 <dminuoso> Consider
09:17:49 <dminuoso> % :t evaluate
09:17:49 <yahb> dminuoso: a -> IO a
09:18:39 <dminuoso> This one only evaluates up until WHNF. You could still have errors lingering in not-yet-evaluated parts. There's tricks to get around this, but you need to be aware of this
09:18:57 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
09:19:34 <dminuoso> It's why uses of `error` are highly discouraged, since it's completely unclear which library functions could possibly trigger an `error`. The most common one that regularly causes headaches for me is\
09:19:36 <dminuoso> % :t read
09:19:36 <yahb> dminuoso: Read a => String -> a
09:19:56 <dminuoso> If you think about it, it should be dead obvious that this is *very* partial (by very I mean almost all strings produce an invalid result, only very few strings produce a parsable value)
09:20:24 <dminuoso> But this type of error quickly bubbles up and cant be reasonably caught anymore
09:20:55 <dminuoso> A way better function instead is:
09:20:57 <dminuoso> % :t readMaybe
09:20:57 <yahb> dminuoso: ; <interactive>:1:1: error: Variable not in scope: readMaybe
09:21:07 <dminuoso> % import Data.Text (readMaybe)
09:21:07 <yahb> dminuoso: ; <interactive>:1:19: error: Module `Data.Text' does not export `readMaybe'
09:21:17 <dminuoso> % import Text.Read (readMaybe)
09:21:18 <yahb> dminuoso:
09:21:19 <dminuoso> % :t readMaybe
09:21:19 <yahb> dminuoso: Read a => String -> Maybe a
09:27:02 rahguzar joins (~rahguzar@dynamic-adsl-94-34-39-251.clienti.tiscali.it)
09:27:55 azeem joins (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it)
09:28:04 × rahguzar quits (~rahguzar@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Client Quit)
09:35:05 × dibblego quits (~dibblego@haskell/developer/dibblego) (Excess Flood)
09:35:22 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
09:35:22 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
09:35:22 dibblego joins (~dibblego@haskell/developer/dibblego)
09:39:05 × tom__ quits (~tom@2a00:23c8:9700:8001:a918:fa2c:4713:fcbd) (Remote host closed the connection)
09:41:07 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds)
09:45:03 dunj3 joins (~dunj3@2001:16b8:3046:8200:9324:28de:5bca:d5dc)
09:45:16 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
09:47:09 × yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
09:47:45 × peterhil quits (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 268 seconds)
09:48:35 lavaman joins (~lavaman@98.38.249.169)
09:49:15 jumper149 joins (~jumper149@80.240.31.34)
09:53:01 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
10:06:07 <guest719> dminuoso about traverse "<dminuoso> Say you have a tree, and you want to process each node - but in a way that if you generate an error at any, that the entire computation is considered failed." could we use foldr >=> pure here?
10:06:36 <guest719> a bunch of function inside a list, then foldr
10:07:08 <guest719> apply on this tree, if one node failed, then return immediatly
10:14:45 <jumper149> Is it wrong to say "MonadPlus is obsolete"? Just like `return` is obsolete because of `pure`?
10:16:00 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
10:16:04 × hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0)
10:16:16 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
10:19:15 × xsperry quits (~as@user/xsperry) (Remote host closed the connection)
10:19:25 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
10:20:44 xsperry joins (~as@user/xsperry)
10:21:23 peterhil joins (~peterhil@mobile-access-b04801-219.dhcp.inet.fi)
10:22:22 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
10:23:45 moondog joins (~root@185.234.208.208.r.toneticgroup.pl)
10:25:06 <moondog> hi, quick question, suppose I'd like to parse Haskell files to find particular method calls and it's argument types, where should I start? Is there any tooling for that to avoid writing everything from scratch?
10:25:24 <dminuoso> guest719: Firstly, `f >=> pure = f`
10:25:25 Brianmancer joins (~Neuromanc@user/briandamag)
10:25:44 <dminuoso> guest719: And what you are thinking of already is traverse precisely.
10:25:47 <dminuoso> % :t traverse
10:25:47 <yahb> dminuoso: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
10:26:33 <guest719> dminuoso fmap can't do early exit because it's type, but >>= can do early exit
10:26:48 <dminuoso> guest719: Yes, and traverse uses >> internally
10:26:56 <dminuoso> (So it's a bit more general even)
10:26:56 <guest719> dminuoso I remeber there're different between fmap and >>=
10:27:10 <dminuoso> % :t (>>)
10:27:10 <yahb> dminuoso: Monad m => m a -> m b -> m b
10:27:11 <guest719> >>= can do if-else, and fmap can't do if-else
10:27:17 <dminuoso> Well, strictly speaking:
10:27:20 <dminuoso> % :t (*>)
10:27:20 <yahb> dminuoso: Applicative f => f a -> f b -> f b
10:27:54 <dminuoso> guest719: `traverse` can be thought to use (*>) internally, which is just an Applicative version of >>
10:28:04 <dminuoso> Roughly the idea is:
10:29:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:29:39 <dminuoso> We take this function (a -> f b) (say `String -> IO Int`)from above, and we `fmap` over the structure (say `[String]`). Then, each value is replaced with a computation of some type (say `IO Int`), so the whole structure then is `[IO Int]`.
10:29:55 <dibblego> you might be thinking of traverse_
10:29:58 <dminuoso> Then we `sequence` this, which turns `[IO Int] -> IO [Int]`
10:32:32 <dminuoso> Imagine this to be: sequence (x:xs) = (:) <$> x <*> sequence xs; sequence [] = pure []
10:32:58 <dminuoso> dibblego: Ah yeah. I guess that was wrong of me.
10:33:06 <dminuoso> While I was typing the definition, I realized my mistake.
10:33:44 <dminuoso> % mySequence (x:xs) = (:) <$> x <*> mySequence xs; mySequence [] = pure []
10:33:44 <yahb> dminuoso:
10:33:46 <dminuoso> % :t mySequence
10:33:46 <yahb> dminuoso: Applicative f => [f a] -> f [a]
10:33:52 <dibblego> I think sequence is more obvious in the way you are trying to explain it, like this:
10:33:53 <dminuoso> % mySequence [Just 10, Just 20, Just 30]
10:33:53 <yahb> dminuoso: Just [10,20,30]
10:34:20 <dibblego> (::.) = liftA2 (:); lift0 = pure; sequence (x:xs) = x ::. sequence xs; sequence [] = lift0 []
10:35:56 <dibblego> once liftA2 is understood conceptually, then (*>) is quite simply: const id with some liftA2-ness
10:36:49 yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
10:40:21 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
10:41:48 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
10:42:51 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
10:44:49 × caubert quits (~caubert@136.244.111.235) (Quit: WeeChat 3.2)
10:45:07 caubert joins (~caubert@136.244.111.235)
10:45:09 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 258 seconds)
10:46:02 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
10:46:27 × anandprabhu quits (anandprabh@gateway/vpn/airvpn/anandprabhu) (Quit: Leaving)
10:49:28 berberman_ joins (~berberman@user/berberman)
10:50:04 × berberman quits (~berberman@user/berberman) (Ping timeout: 246 seconds)
10:54:05 Topsi joins (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de)
10:56:36 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
11:01:58 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
11:03:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
11:06:28 × lars8 quits (~bc817c21@217.29.117.252) (Quit: quit)
11:07:38 AlexNoo_ joins (~AlexNoo@178.34.161.231)
11:08:00 cfricke joins (~cfricke@user/cfricke)
11:08:01 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:08:31 × cfricke quits (~cfricke@user/cfricke) (Client Quit)
11:09:18 × Alex_test quits (~al_test@178.34.162.246) (Ping timeout: 258 seconds)
11:09:18 × AlexZenon quits (~alzenon@178.34.162.246) (Ping timeout: 258 seconds)
11:11:06 × AlexNoo quits (~AlexNoo@178.34.162.246) (Ping timeout: 256 seconds)
11:12:55 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
11:13:12 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
11:15:17 Alex_test joins (~al_test@178.34.161.231)
11:16:34 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
11:16:36 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
11:16:40 AlexZenon joins (~alzenon@178.34.161.231)
11:16:53 × moondog quits (~root@185.234.208.208.r.toneticgroup.pl) (Quit: leaving)
11:18:35 × lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap)
11:18:46 <albet70> so could we say traverse another version of fmap which it can do earlier exit?
11:21:01 <[exa]> "another" may be a weak label for the myriad of extra stuff it can do :]
11:21:11 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
11:22:28 elf_fortrez joins (~elf_fortr@adsl-72-50-4-55.prtc.net)
11:27:07 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
11:27:44 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
11:28:04 <dminuoso> albet70: Mmm, not just that.
11:28:37 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
11:28:38 <dminuoso> albet70: Say you have a Tree of values, say of type String. For each string you want to query some database, and replace the string with some value you read from the database, say something of type User.
11:29:00 <dminuoso> then you can do: do { userTree <- traverse fetchUserFromString stringTree; ... }
11:29:46 <dminuoso> albet70: The key thing to realize is that Applicative/Monad encode certain.. "effects". For `Maybe/Either e` the effect is that of an exception, for IO it's outside world interaction, for list it's non-determinism, etc..
11:30:00 <dminuoso> So we map each element to an effectful computation, and then sequence them
11:30:38 <dminuoso> Important bit to notice, is that traverse fundamentally does not change the "shape" of that structure. So if you traverse over a tree, the shape of it remains (so you cant drop or create nodes)
11:31:44 <dminuoso> traverse on a list for example gives us a more generalized version of effectful loops. So a Python loop in which you do say database queries can be written with `traverse`
11:31:57 <dminuoso> But `traverse` allows us to do even more, not just database queries
11:32:03 <dminuoso> And it works on not just lists, but also trees.
11:32:42 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 255 seconds)
11:33:47 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
11:34:14 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
11:39:18 lambdap joins (~lambdap@static.167.190.119.168.clients.your-server.de)
11:39:46 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
11:39:46 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
11:39:46 turlando joins (~turlando@user/turlando)
11:42:20 × turlando_ quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Ping timeout: 265 seconds)
11:42:26 × lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Client Quit)
11:43:01 AlexNoo_ is now known as AlexNoo
11:43:12 × elf_fortrez quits (~elf_fortr@adsl-72-50-4-55.prtc.net) (Quit: Client closed)
11:44:34 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds)
11:45:34 lambdap joins (~lambdap@static.167.190.119.168.clients.your-server.de)
11:50:10 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
11:51:26 × siraben quits (~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
11:51:27 × MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Quit: Bridge terminating on SIGTERM)
11:51:27 × Aleci[m] quits (~alecilibr@2001:470:69fc:105::32e7) (Quit: Bridge terminating on SIGTERM)
11:51:27 × ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Quit: Bridge terminating on SIGTERM)
11:51:27 × ac quits (~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM)
11:51:27 × carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM)
11:51:27 × kadoban quits (~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
11:51:27 × cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
11:51:27 × Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
11:51:27 × rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Quit: Bridge terminating on SIGTERM)
11:51:27 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
11:51:27 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
11:51:27 × inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM)
11:51:27 × the-coot[m] quits (~the-cootm@2001:470:69fc:105::95f) (Quit: Bridge terminating on SIGTERM)
11:51:27 × boxscape quits (~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM)
11:51:27 × hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
11:51:27 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
11:51:28 × lwe[m] quits (~dendrumat@2001:470:69fc:105::2f9b) (Quit: Bridge terminating on SIGTERM)
11:51:28 × peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
11:51:28 × gxt quits (~gxt@2001:470:69fc:105::3513) (Quit: Bridge terminating on SIGTERM)
11:51:28 × cdepillabout[m] quits (~cdepillab@2001:470:69fc:105::3d3) (Quit: Bridge terminating on SIGTERM)
11:51:28 × ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
11:51:28 × Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
11:51:28 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
11:51:28 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
11:51:28 × thedward[m] quits (~thedwardm@2001:470:69fc:105::f79) (Quit: Bridge terminating on SIGTERM)
11:51:28 × polykernel quits (~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM)
11:51:28 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
11:51:28 × Deewiant quits (~deewiant@2001:470:69fc:105::2fd3) (Quit: Bridge terminating on SIGTERM)
11:51:28 × ru0mad[m] quits (~ru0madmat@2001:470:69fc:105::9b2) (Quit: Bridge terminating on SIGTERM)
11:51:28 × jophish quits (~jophish@2001:470:69fc:105::670) (Quit: Bridge terminating on SIGTERM)
11:51:28 × bitonic quits (~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
11:51:28 × bryan[m] quits (~bchreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
11:51:28 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
11:51:28 × PotatoHatsue quits (~berberman@2001:470:69fc:105::b488) (Quit: Bridge terminating on SIGTERM)
11:51:28 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
11:51:28 × Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
11:51:28 × jaror[m] quits (~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM)
11:51:28 × hjulle[m] quits (~hjullemat@2001:470:69fc:105::1dd) (Quit: Bridge terminating on SIGTERM)
11:51:28 × sridonhiatus[m] quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
11:51:28 × unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM)
11:51:29 × amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM)
11:51:29 × reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
11:51:31 × vbeatrice[m] quits (~vbeatrice@2001:470:69fc:105::3ebf) (Quit: Bridge terminating on SIGTERM)
11:51:31 × fakehacker[m] quits (~fakehacke@2001:470:69fc:105::b5f0) (Quit: Bridge terminating on SIGTERM)
11:51:31 × adziahel[m] quits (~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM)
11:51:31 × justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
11:51:31 × Guest7801 quits (~sylveonma@2001:470:69fc:105::2d95) (Quit: Bridge terminating on SIGTERM)
11:51:31 × jakefromstatefar quits (~jakefroms@2001:470:69fc:105::15ef) (Quit: Bridge terminating on SIGTERM)
11:51:31 × dualinverter[m] quits (~dualinver@2001:470:69fc:105::16a7) (Quit: Bridge terminating on SIGTERM)
11:51:31 × ixlun quits (~ixlun@2001:470:69fc:105::41b3) (Quit: Bridge terminating on SIGTERM)
11:51:31 × Drezil quits (~drezilkif@2001:470:69fc:105::7f8) (Quit: Bridge terminating on SIGTERM)
11:51:31 × jellz[m] quits (~jellzmatr@2001:470:69fc:105::2daa) (Quit: Bridge terminating on SIGTERM)
11:51:31 × dminuoso[m] quits (~dminuosom@2001:470:69fc:105::33bb) (Quit: Bridge terminating on SIGTERM)
11:51:31 × wallymathieu[m] quits (~wallymath@2001:470:69fc:105::16ae) (Quit: Bridge terminating on SIGTERM)
11:51:31 × kosmikus[m] quits (~andresloe@2001:470:69fc:105::95d) (Quit: Bridge terminating on SIGTERM)
11:51:31 × Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
11:51:31 × RohitGoswami[m] quits (~rgoswamim@2001:470:69fc:105::16cc) (Quit: Bridge terminating on SIGTERM)
11:51:31 × yin[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM)
11:51:31 × Soft quits (~soft-matr@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM)
11:51:31 × autrim64[m] quits (~autrim64m@2001:470:69fc:105::16a1) (Quit: Bridge terminating on SIGTERM)
11:51:32 × oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
11:51:32 × ecameron[m] quits (~ecameronm@2001:470:69fc:105::35df) (Quit: Bridge terminating on SIGTERM)
11:51:32 × infinisil quits (~infinisil@2001:470:69fc:105::ff8) (Quit: Bridge terminating on SIGTERM)
11:51:32 × Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Quit: Bridge terminating on SIGTERM)
11:51:32 × aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (Quit: Bridge terminating on SIGTERM)
11:51:32 × octeep[m]1 quits (~octeepmoc@2001:470:69fc:105::695e) (Quit: Bridge terminating on SIGTERM)
11:51:33 × hughjfchen[m] quits (~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM)
11:51:33 × afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
11:51:33 × zfnmxt quits (~zfnmxtzfn@user/zfnmxt) (Quit: Bridge terminating on SIGTERM)
11:51:38 × sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
11:51:38 × fabfianda[m] quits (~fabfianda@2001:470:69fc:105::6db) (Quit: Bridge terminating on SIGTERM)
11:51:38 × bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
11:51:39 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
11:51:39 × SimonWeiss[m] quits (~weiss-dma@2001:470:69fc:105::bebd) (Quit: Bridge terminating on SIGTERM)
11:51:51 euandreh joins (~euandreh@191.181.59.160)
11:54:47 thedward[m] joins (~thedwardm@2001:470:69fc:105::f79)
11:56:24 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
12:01:44 cuz joins (~user@2601:182:cc02:8b0:5d77:6ee9:7f95:9dca)
12:04:11 <dibblego> traverse is exactly fmap, if you use Identity in place of the general Applicative
12:04:18 ac joins (~aloiscoch@2001:470:69fc:105::65)
12:04:18 sm joins (~sm@plaintextaccounting/sm)
12:04:18 hjulle[m] joins (~hjullemat@2001:470:69fc:105::1dd)
12:04:18 fgaz joins (~fgaz@2001:470:69fc:105::842)
12:04:18 jaror[m] joins (~jaror@2001:470:69fc:105::265)
12:04:18 peddie joins (~peddie@2001:470:69fc:105::25d)
12:04:18 cdsmith joins (~cdsmithma@2001:470:69fc:105::284)
12:04:18 ru0mad[m] joins (~ru0madmat@2001:470:69fc:105::9b2)
12:04:18 fabfianda[m] joins (~fabfianda@2001:470:69fc:105::6db)
12:04:18 bb010g joins (~bb010g@2001:470:69fc:105::9a5)
12:04:19 Las[m] joins (~lasmatrix@2001:470:69fc:105::74e)
12:04:19 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
12:04:19 ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a)
12:04:19 amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b)
12:04:19 the-coot[m] joins (~the-cootm@2001:470:69fc:105::95f)
12:04:19 vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe)
12:04:19 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
12:04:19 kadoban joins (~kadoban@user/kadoban)
12:04:19 carmysilna joins (~brightly-@2001:470:69fc:105::2190)
12:04:19 MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22)
12:04:19 bitonic joins (~bitonic@2001:470:69fc:105::1812)
12:04:19 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
12:04:19 jophish joins (~jophish@2001:470:69fc:105::670)
12:04:19 PotatoHatsue joins (~berberman@2001:470:69fc:105::b488)
12:04:19 siraben joins (~siraben@user/siraben)
12:04:19 Deewiant joins (~deewiant@2001:470:69fc:105::2fd3)
12:04:19 cdepillabout[m] joins (~cdepillab@2001:470:69fc:105::3d3)
12:04:19 ixlun joins (~ixlun@2001:470:69fc:105::41b3)
12:04:19 unclechu joins (~unclechu@2001:470:69fc:105::354)
12:04:19 bryan[m] joins (~bchreekat@2001:470:69fc:105::16b5)
12:04:19 unrooted joins (~unrooted@2001:470:69fc:105::a4a)
12:04:19 Aleci[m] joins (~alecilibr@2001:470:69fc:105::32e7)
12:04:19 rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70)
12:04:20 maralorn joins (~maralorn@2001:470:69fc:105::251)
12:04:20 lwe[m] joins (~dendrumat@2001:470:69fc:105::2f9b)
12:04:20 inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5)
12:04:20 reza[m] joins (~rezaphone@2001:470:69fc:105::3eda)
12:04:20 gxt joins (~gxt@2001:470:69fc:105::3513)
12:04:20 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
12:04:20 hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4)
12:04:20 boxscape joins (~boxscape@user/boxscape)
12:04:20 infinisil joins (~infinisil@2001:470:69fc:105::ff8)
12:04:20 ormaaj joins (~ormaaj@user/ormaaj)
12:04:20 Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56)
12:04:20 Tisoxin joins (~ikosit@user/ikosit)
12:04:20 sridonhiatus[m] joins (~sridmatri@2001:470:69fc:105::1c2)
12:04:20 jakefromstatefar joins (~jakefroms@2001:470:69fc:105::15ef)
12:04:20 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
12:04:20 polykernel joins (~polykerne@user/polykernel)
12:04:20 hughjfchen[m] joins (~hughjfche@2001:470:69fc:105::c29d)
12:04:23 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
12:04:30 wallymathieu[m] joins (~wallymath@2001:470:69fc:105::16ae)
12:04:30 Drezil joins (~drezilkif@2001:470:69fc:105::7f8)
12:04:30 Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0)
12:04:30 dualinverter[m] joins (~dualinver@2001:470:69fc:105::16a7)
12:04:31 aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9)
12:04:31 Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5)
12:04:31 ecameron[m] joins (~ecameronm@2001:470:69fc:105::35df)
12:04:31 dminuoso[m] joins (~dminuosom@2001:470:69fc:105::33bb)
12:04:31 autrim64[m] joins (~autrim64m@2001:470:69fc:105::16a1)
12:04:31 kosmikus[m] joins (~andresloe@2001:470:69fc:105::95d)
12:04:31 adziahel[m] joins (~adziahelm@2001:470:69fc:105::b4d)
12:04:31 Soft joins (~soft-matr@2001:470:69fc:105::c75)
12:04:31 RohitGoswami[m] joins (~rgoswamim@2001:470:69fc:105::16cc)
12:04:32 yin[m] joins (~zwromatri@2001:470:69fc:105::1d4)
12:04:32 jellz[m] joins (~jellzmatr@2001:470:69fc:105::2daa)
12:04:32 SimonWeiss[m] joins (~weiss-dma@2001:470:69fc:105::bebd)
12:04:32 afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b)
12:04:32 octeep[m]1 joins (~octeepmoc@2001:470:69fc:105::695e)
12:04:32 fakehacker[m] joins (~fakehacke@2001:470:69fc:105::b5f0)
12:04:32 justosophy[m] joins (~justosoph@2001:470:69fc:105::572f)
12:04:32 <dibblego> but it also does other Applicative things, not just Identity
12:04:33 Sylveon joins (~sylveonma@2001:470:69fc:105::2d95)
12:04:33 oak- joins (~oakuniver@2001:470:69fc:105::fcd)
12:04:34 vbeatrice[m] joins (~vbeatrice@2001:470:69fc:105::3ebf)
12:04:56 Sylveon is now known as Guest6263
12:05:43 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
12:06:16 zangi joins (~zangi@103.154.230.230)
12:06:36 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
12:07:26 gentauro joins (~gentauro@user/gentauro)
12:09:05 cfricke joins (~cfricke@user/cfricke)
12:14:39 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:14:48 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
12:16:02 burnside_ joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
12:16:02 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer)
12:18:02 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
12:20:34 chomwitt joins (~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374)
12:21:00 × burnside_ quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
12:21:26 smichel17 joins (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
12:34:32 favonia joins (~favonia@user/favonia)
12:35:30 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
12:35:38 dudek joins (~dudek@185.150.236.155)
12:36:56 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds)
12:39:11 qbt joins (~edun@user/edun)
12:40:23 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 244 seconds)
12:41:01 × favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds)
12:42:18 favonia joins (~favonia@user/favonia)
12:42:40 ChaiTRex joins (~ChaiTRex@user/chaitrex)
12:45:53 <hseg> hi. have this generator http://ix.io/3tqe, and I would like to generalize it so its input generators can depend on each other's results (i.e. want to be able to pass [a -> Gen a])
12:46:15 <hseg> have tried just doing that, but it involves a lot of churn
12:46:22 × yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
12:46:30 <hseg> is there a more mtl'y way of writing this that can help avoid this churn
12:46:33 <hseg> ?
12:47:55 fef joins (~thedawn@user/thedawn)
12:48:03 <hseg> presumably, I'd want to have inputs be sth like [n a] with MonadGen n and some constraint expressing that whatever effects n gives are liftable to m
12:48:43 <hseg> but that looks overly involved
12:51:44 × Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
12:52:00 Xnuk joins (~xnuk@vultr.xnu.kr)
12:53:34 jolly joins (~jolly@208.180.97.158)
12:54:05 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
12:54:53 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
12:54:59 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
12:58:34 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
12:58:35 <zangi> probably a paradox, but does having IO means haskell is impure? :)
12:58:42 <Axman6> no
12:59:30 <zangi> does IO itself impure? what does it mean to be "pure" in haskell sense?
12:59:49 <Axman6> IO is pure, the execution of it may not be. dibblego is excellent at explaining why
12:59:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:59:59 Axman6 handballs the conversation to dibblego
13:00:15 <DigitalKiwi> what about unsafeCoerce
13:00:52 <zangi> who's dibblego?
13:01:07 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
13:01:09 alx741 joins (~alx741@186.178.109.120)
13:01:13 <DigitalKiwi> why's dibblego
13:01:43 <Axman6> HE authored much of the NICTA/Data61/System-F FP course, where we explain why IO is pure
13:01:46 <Axman6> He*
13:02:18 <zangi> does he have any article about this issue?
13:02:20 <DigitalKiwi> ofc we all know the answer to how's dibblego (by plane)
13:02:27 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
13:02:35 <DigitalKiwi> ba dum tsch
13:02:40 juhp joins (~juhp@128.106.188.66)
13:03:14 <DigitalKiwi> https://github.com/system-f/fp-course
13:03:41 <DigitalKiwi> https://www.youtube.com/watch?v=NzIZzvbplSM&list=PLly9WMAVMrayYo2c-1E_rIRwBXG_FbLBW
13:04:14 ikex1 joins (ash@user/ikex)
13:04:27 <zangi> DigitalKiwi++
13:04:42 × hseg quits (~gesh@185.120.126.10) (Ping timeout: 240 seconds)
13:05:09 <zangi> thanks, anyway does it mean IO in haskell is different to IO in other (imperative) languages?
13:05:50 × ikex quits (~ash@user/ikex) (Ping timeout: 258 seconds)
13:05:51 ikex1 is now known as ikex
13:06:42 × fradet quits (~fradet@216.252.75.247) (Ping timeout: 240 seconds)
13:07:53 <[exa]> zangi: haskell is pure; the ugly impure execution of the IO action recipes written in haskell is only done by computers
13:07:54 fradet joins (~fradet@216.252.75.247)
13:08:27 <kuribas> [exa]: but then any language is pure?
13:09:12 <[exa]> nah, some languages rely on that impurity
13:10:27 <[exa]> (and some certain others are just dirty)
13:11:44 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
13:14:07 anandprabhu joins (~anandprab@94.202.243.198)
13:15:18 <DigitalKiwi> i like my coffee like i like my programming languages; strong, statically typed, purely functional with type inference and lazy evaluation.
13:16:18 shriekingnoise joins (~shrieking@186.137.144.80)
13:17:41 × anandprabhu quits (~anandprab@94.202.243.198) (Client Quit)
13:18:13 <lechner> Hi, how can I use MonadFail to handle exceptions from Codec.Compression.Lzma, please?
13:27:37 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 245 seconds)
13:28:16 × jiribenes quits (~jiribenes@rosa.jiribenes.com) (Ping timeout: 246 seconds)
13:29:45 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
13:30:45 × peterhil quits (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 258 seconds)
13:33:02 jackhill joins (~jackhill@kalessin.dragonsnail.net)
13:34:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
13:34:58 <Boarders> is there a variant combinator in megaparsec that is like: do {t <- takeWhileP Nothing (/= '\n'); char '\n'; pure t}
13:37:46 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds)
13:37:48 × cuz quits (~user@2601:182:cc02:8b0:5d77:6ee9:7f95:9dca) (Ping timeout: 255 seconds)
13:38:53 Sgeo joins (~Sgeo@user/sgeo)
13:40:37 <tdammers> https://hackage.haskell.org/package/parser-combinators-1.3.0/docs/Control-Applicative-Combinators.html#v:manyTill maybe?
13:41:19 <dmj`> lechner: did you try using `catch`
13:43:45 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
13:44:40 <Boarders> manyTill is very related but not quite the same
13:45:32 <lechner> dmj`: i'm still reading, and working on my general Haskell learning curve
13:48:54 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
13:49:09 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 258 seconds)
13:49:22 hendursaga joins (~weechat@user/hendursaga)
13:50:10 lavaman joins (~lavaman@98.38.249.169)
13:51:21 <lechner> dmj`: but i do have working program (which i wrote) where I could try your suggestion. how do i use catch, please? https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L82
13:51:52 aforemny_ is now known as aforemny
13:54:40 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
13:54:47 × michalz quits (~michalz@185.246.204.55) (Remote host closed the connection)
13:55:26 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
13:55:46 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
14:01:50 econo joins (uid147250@user/econo)
14:02:12 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
14:02:33 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 255 seconds)
14:05:19 sander is now known as sndr
14:05:40 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
14:05:55 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
14:06:39 <tzh> hey so i'm working on a haskell game; does anybody have any suggestions for an input library that would work well? previously i've used reactive-banana, which worked well enough even if its FRP nature made it a little clunky for use in a highly-interactive program. i saw some people mention using arrowized FRP libraries likes Yampa/dunai but that seems more like something to use for physics integration than for things like 'how to click on
14:06:40 <tzh> a menu'
14:09:15 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
14:09:21 cuz joins (~user@38.140.58.234)
14:09:30 × chomwitt quits (~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
14:10:43 jippiedoe joins (~david@2a02-a44c-e14e-1-1bc4-b398-e9ad-3132.fixed6.kpn.net)
14:13:08 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
14:14:12 <kuribas> tzh: reactive-banana isn't an input library, it's a FRP library.
14:14:20 <kuribas> You can use it with any UI library.
14:15:21 <maerwald> SDL2?
14:15:37 <[exa]> tzh: immediate-mode GUIs (google imgui) are priceless for games, except I don't know if we have any for haskell yet
14:15:51 <tzh> kuribas: okay yes it's not a raw input-catching library; i'm actually using glfw for that. what i'm looking for is an input _processing_ library, to impose some order onto my input flow so it's not a bunch of ad-hoc garbage
14:16:18 <kuribas> tzh: reactive-banana should be fine.
14:17:39 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
14:18:43 OndejSkup[m] joins (~mimivxmat@2001:470:69fc:105::c300)
14:19:12 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:19:13 ph88_ joins (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
14:19:16 × jippiedoe quits (~david@2a02-a44c-e14e-1-1bc4-b398-e9ad-3132.fixed6.kpn.net) (Quit: Leaving)
14:21:02 <tzh> the main issue with reactive-banana is that it gets pretty clunky since it only runs in IO and thus can never directly run actual buffer writes... (well, okay, there are ways but that becomes a mess of running all input-processing code inside a render monad, with an unknown timing to my render loop). which means i need to have its output actions queue render actions like buffer allocations/writes, and then outside of the event loop pull
14:21:03 <tzh> them out so they can actually be run, which seems a little clunky and counter to the FRP experience, but i don't really see how that could be avoided given how opengl rendering works. so really i'd just like for that experience to be a bit smoother
14:21:04 jiribenes joins (~jiribenes@rosa.jiribenes.com)
14:22:31 × ph88^ quits (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) (Ping timeout: 246 seconds)
14:23:24 jackhill joins (~jackhill@kalessin.dragonsnail.net)
14:23:35 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
14:26:11 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
14:27:25 × favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds)
14:27:50 favonia joins (~favonia@user/favonia)
14:28:24 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 252 seconds)
14:28:36 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
14:30:23 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
14:33:49 acidjnk_new joins (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de)
14:36:18 Null_A joins (~null_a@2601:645:8700:2290:34e6:e307:f490:7d07)
14:36:56 × acidjnk quits (~acidjnk@p200300d0c72b9531f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
14:36:56 peterhil joins (~peterhil@mobile-access-b04801-219.dhcp.inet.fi)
14:38:00 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
14:41:22 × acidjnk_new quits (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
14:49:52 allbery_b is now known as geekosaur
14:50:15 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
14:50:34 favonia joins (~favonia@user/favonia)
14:52:25 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
14:53:43 chris_ joins (~chris@81.96.113.213)
14:55:56 fef joins (~thedawn@user/thedawn)
15:01:52 kar1[m] joins (~kar1matri@2001:470:69fc:105::c308)
15:08:45 cfricke joins (~cfricke@user/cfricke)
15:13:30 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 252 seconds)
15:18:00 <dmj`> lechner: do { result <- try (evaluate (decompress bytes)) :: IO (Either SomeException ByteString); case result of { Left e -> print e; Right bytes -> print (length bytes) } }
15:18:03 nuncanada joins (~dude@179.235.162.215)
15:20:41 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:22:18 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
15:22:29 <Las[m]> Question about bound threads: Will unbound threads use an OS thread created by forkOS?
15:22:51 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:23:36 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
15:26:24 <monochrom> Probably in an ideal world shouldn't matter but in practice the GHC implementers wouldn't troll themselves by doing that.
15:26:28 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
15:26:36 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 265 seconds)
15:27:33 zmt00 joins (~zmt00@user/zmt00)
15:28:14 <monochrom> In practice there is pure Haskell code that can hold up an OS thread uninterruptible. Now what can you do when the rightful owner of the OS thread needs it?
15:29:51 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
15:30:03 <c_wraith> honestly, that's not a very important edge case, given that the same pure code that will hold a thread uninterruptably will also block garbage collection, and therefore the entire program via stop-the-world GC
15:30:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:31:12 <c_wraith> If you write a loop that does that, you get what you deserve whether bound threads are involved or not.
15:31:51 <c_wraith> (this is why mueval starts new processes, not just threads)
15:32:33 abc joins (~abc@213.195.121.143)
15:32:47 × abc quits (~abc@213.195.121.143) (Client Quit)
15:35:59 justsomeguy joins (~justsomeg@user/justsomeguy)
15:37:44 derelict joins (~derelict@user/derelict)
15:38:48 lbseale joins (~lbseale@user/ep1ctetus)
15:39:03 chomwitt joins (~chomwitt@athedsl-32487.home.otenet.gr)
15:43:00 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection)
15:43:13 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
15:43:28 <jumper149> The diagram here: https://wiki.haskell.org/Typeclassopedia
15:43:49 <jumper149> It is missing the superclass `Alternative` of `MonadPlus` :(
15:44:45 andrews joins (~andrews@user/andrews)
15:44:56 andrews parts (~andrews@user/andrews) ()
15:46:09 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
15:46:38 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
15:47:00 × kuribas quits (~user@ptr-25vy0i7jsa6kv1vvjg7.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
15:47:07 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
15:49:46 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
15:50:12 × bbhoss_ quits (sid18216@id-18216.tinside.irccloud.com) ()
15:51:32 bbhoss joins (sid18216@id-18216.tinside.irccloud.com)
15:51:48 × tlax quits (tlax@kapsi.fi) (Ping timeout: 276 seconds)
15:51:55 tlax joins (tlax@kapsi.fi)
15:52:22 × Logio quits (em@kapsi.fi) (Ping timeout: 252 seconds)
15:52:44 × ent quits (entgod@kapsi.fi) (Ping timeout: 256 seconds)
15:54:34 <Boarders> in haddock if I want to include an example that is too long then is the thing to put definitions in a codeblock or make the example multi-line or something else?
15:54:42 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
15:55:56 <sm> Boarders: you can have
15:55:56 <sm> @
15:55:56 <sm> multi line example...
15:55:56 <sm> @
15:56:00 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:57:16 favonia joins (~favonia@user/favonia)
15:57:29 Logio joins (em@kapsi.fi)
15:57:43 slycelote joins (~slycelote@user/slycelote)
15:57:51 ent joins (entgod@kapsi.fi)
15:58:40 <Boarders> how do you indicate with that what it should evaluate to?
15:58:50 × slycelote_ quits (~slycelote@user/slycelote) (Ping timeout: 255 seconds)
15:59:45 <sm> (maybe that got truncated. @ delimiters.)
16:00:15 <sm> Boarders: are you asking about doctests ? the doctest doc will tell
16:02:34 <sm> https://github.com/sol/doctest#readme
16:04:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:07:13 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
16:07:46 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
16:09:41 chris_ joins (~chris@81.96.113.213)
16:13:53 × dudek quits (~dudek@185.150.236.155) (Read error: Connection reset by peer)
16:15:29 slowButPresent joins (~slowButPr@user/slowbutpresent)
16:16:17 × cuz quits (~user@38.140.58.234) (Remote host closed the connection)
16:16:29 cuz joins (~user@38.140.58.234)
16:16:58 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
16:16:58 allbery_b joins (~geekosaur@xmonad/geekosaur)
16:17:01 allbery_b is now known as geekosaur
16:20:57 dunkeln joins (~dunkeln@188.71.231.232)
16:20:58 × dunkeln quits (~dunkeln@188.71.231.232) (Client Quit)
16:20:59 jakalx parts (~jakalx@base.jakalx.net) ()
16:21:01 <gentauro> does anybody has the link to a tweet staging: «category theory is the mathematics of mathematics»?
16:21:19 <gentauro> I think it was from a female cs prof (I recall)
16:21:20 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 255 seconds)
16:22:29 dunkeln joins (~dunkeln@188.71.231.232)
16:22:56 <Boarders> https://twitter.com/emilyriehl/status/979375728373518336?s=20
16:24:55 <lechner> dmj`: it compiled, but did not stop the program from terminating. i got the same message as before: "Codec.Compression.Lzma.decompressWith: decoding error LzmaRetOK" https://dpaste.org/FGQs#L7,84,85,86,87
16:24:57 <c_wraith> In that tweet she credits Eugenia Cheng, which is a name I've heard before.
16:26:09 blackeuler joins (~blackeule@72.82.14.206)
16:26:44 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 268 seconds)
16:27:41 × blackeuler quits (~blackeule@72.82.14.206) (Client Quit)
16:28:42 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
16:30:58 × nuncanada quits (~dude@179.235.162.215) (Read error: Connection reset by peer)
16:31:13 <lechner> just make sure you pronounce it right, please http://eugeniacheng.com/pronunciation/
16:31:20 favonia joins (~favonia@user/favonia)
16:31:34 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 256 seconds)
16:34:40 nuncanada joins (~dude@179.235.162.215)
16:36:00 × favonia quits (~favonia@user/favonia) (Remote host closed the connection)
16:36:56 favonia joins (~favonia@user/favonia)
16:37:10 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Remote host closed the connection)
16:37:25 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
16:41:23 <dmj`> lechner: I think the issue is that you're not forking a thread to handle new clients, so your server terminates immediately, since the main thread of execution exits.. You're just blocking on a socket receive until the client exits, then your process terminates. You need to fork threads for each client and ensure the main thread of execution is running indefinitely
16:42:11 × fendor quits (~fendor@77.119.223.215.wireless.dyn.drei.com) (Remote host closed the connection)
16:42:36 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 256 seconds)
16:43:30 <lechner> dmj`: without a decoding error, this does run forever https://dpaste.org/FGQs#L105
16:43:47 <lechner> via iterateM_
16:45:07 <lechner> it is in fact my motivation to catch the error
16:45:47 Erutuon joins (~Erutuon@user/erutuon)
16:46:10 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:47:15 × ablutor quits (~quassel@wasscher.com) (Quit: going for vitamine d)
16:48:10 ablutor joins (~quassel@wasscher.com)
16:50:07 × derelict quits (~derelict@user/derelict) (Ping timeout: 245 seconds)
16:52:23 <gentauro> 18:22 < Boarders> https://twitter.com/emilyriehl/status/979375728373518336
16:52:29 <gentauro> Boarders: that's the one. Thx :)
16:53:25 jakalx joins (~jakalx@base.jakalx.net)
16:54:56 cfricke joins (~cfricke@user/cfricke)
17:00:22 × oso quits (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) (Ping timeout: 246 seconds)
17:00:44 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
17:03:07 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds)
17:03:29 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
17:03:35 vemek1 joins (~vemek@2a03:b0c0:2:d0::d98:1)
17:04:05 × azeem quits (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Ping timeout: 255 seconds)
17:06:20 azeem joins (~azeem@176.200.239.190)
17:07:24 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
17:07:44 gehmehgeh joins (~user@user/gehmehgeh)
17:07:54 gustik joins (~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895)
17:08:07 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:08:51 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:09:14 × gustik quits (~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895) (Quit: Leaving)
17:09:31 gustik joins (~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895)
17:10:57 × favonia quits (~favonia@user/favonia) (Ping timeout: 245 seconds)
17:14:26 × chomwitt quits (~chomwitt@athedsl-32487.home.otenet.gr) (Ping timeout: 255 seconds)
17:14:51 jushur joins (~human@user/jushur)
17:14:52 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection)
17:15:14 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
17:15:23 × azeem quits (~azeem@176.200.239.190) (Ping timeout: 258 seconds)
17:15:39 jumper149 joins (~jumper149@80.240.31.34)
17:16:03 × benin0369 quits (~benin@183.82.205.17) (Ping timeout: 255 seconds)
17:16:10 <jumper149> I want to choose a Haskell formatter. Are there any nice comparisons? Maybe a blog post?
17:16:12 gioyik joins (~gioyik@gateway/tor-sasl/gioyik)
17:17:00 <[exa]> jumper149: probably best to ask yourself why you want the formatting at first
17:17:07 <dsal> Haskell In Depth went over them slightly, but didn't offer an opinion.
17:17:32 <dsal> IMO, ormolu is weird and wrong, but it's the new kid and at least some people like it.
17:17:34 <dminuoso> I chose emacs as my formatter. I can press enter, and it formats the code nicely.
17:17:35 azeem joins (~azeem@176.200.239.190)
17:17:35 benin0369 joins (~benin@183.82.176.182)
17:17:49 <dminuoso> If it does it wrong, I can change the indentation with a single keypress.
17:17:55 <[exa]> fourmolu is kinda less bad than ormolu
17:18:17 geekosaur formats man8ually as no formatter matches his preference
17:18:30 <dsal> I use stylish-haskell when I remember. It usually does OK.
17:18:41 <jumper149> I want formatting to be consistent over a project. And I would like something that makes sense with git.
17:18:48 <maerwald> brittany got close to my needs, but it tends to pull apart code so much that stuff becomes overly verbose
17:18:55 <dsal> I mainly like my imports tidy.
17:18:59 <dminuoso> jumper149: A consistent style is already a bizarre thing.
17:19:02 <dsal> jumper149: git just stores blobs, so that's not a big deal. :)
17:19:11 lavaman joins (~lavaman@98.38.249.169)
17:19:11 <dminuoso> jumper149: Code formatting communicates intent and structure, its highly contextual.
17:19:22 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
17:19:39 <maerwald> dminuoso: yes, the consistency argument is mostly nonsense imo. The "I'm too lazy argument" I can get behind
17:19:42 <maerwald> because I am
17:19:43 <dsal> ormolu was inspired by elm's canonical format in a lot of way and they prioritized making it easy to read diffs generated by whatever tools they happened to use. This is a terrible mistake, IMO.
17:19:45 <monochrom> Perhaps "makes sense with git" means "makes sense with diff".
17:19:49 <dminuoso> It's sort of the equivalent of saying "a paragraph must always have 3 sentences". It's a stupid proposition to begin with.
17:20:01 <jumper149> monochrom: exactly!
17:20:21 <dminuoso> Yes, if each paragraph has 3 sentences, you have a consistent formatting of your natural language. But it really hampers readability
17:20:25 <dsal> Most of the time when I'm reading code, I'm not reading diffs. I'd rather prioritize the code over the diffs.
17:20:32 <monochrom> People keep XYing their diction all the time. Remember that one time when someone said "haddock" to mean doctest?
17:20:33 × xff0x_ quits (~xff0x@2001:1a81:5299:ea00:490d:5ed2:61e8:145d) (Ping timeout: 255 seconds)
17:20:38 × azeem quits (~azeem@176.200.239.190) (Read error: Connection reset by peer)
17:21:24 xff0x_ joins (~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06)
17:21:48 azeem joins (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it)
17:21:49 <maerwald> dsal: in a lot of PRs I've seen at work there was no way to understand anything from the diff without a walkthrough by the author. Even looking at my own PRs I don't understand anything. In some companies the author writes a walkthrough in the diff comments, but even then: diffs lie
17:22:16 <maerwald> you don't see the code you changed, only the lines you changed
17:22:26 <jumper149> I particularly want a formatter for stuff like same style Haddocks (-- vs {- -}), sorted imports and extensions.
17:22:36 favonia joins (~favonia@user/favonia)
17:22:43 <dminuoso> jumper149: For import/extensions sorting, I find stylish-haskell to be agreeable.
17:22:49 <dminuoso> (It just breaks in the presence of QQs and TH)
17:22:54 <maerwald> and CPP
17:23:16 <dminuoso> jumper149: But note, you should chose your tool to fit *your* style.
17:23:16 <dsal> maerwald: yeah. I have that problem reading diffs sometimes. Like, cool you changed x to y... but what was x and what's y?
17:23:34 <maerwald> also: reverse dependencies of your code
17:23:57 <maerwald> you might need to re-read the entire codebase from a different perspective
17:24:21 <maerwald> while the scrum master is asking why the PR is still not merged
17:24:34 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
17:24:56 <maerwald> but hey... not everyone works in security critical code: just push and hope for the best
17:25:02 <monochrom> "the closer you look, the less you see"
17:25:30 <dminuoso> monochrom: Yes, that was the mentality of openssl. Distance yourself from the code and embrace Heartbleed!
17:25:32 <dsal> These modern "diff-friendly" things take something small, clear and readable and make me have to scroll to understand what's going on. https://www.irccloud.com/pastebin/dhodxIZ7/ok.elm
17:25:42 <monochrom> haha
17:26:11 <geekosaur> I somewhat regularly have to click on the extend buttons in github to understand a diff
17:26:26 <geekosaur> which is the simple version of this
17:26:54 <monochrom> Clearly, the logical conclusion is one token per line. >:)
17:27:08 <dsal> There are lots of cases where formatters seem to do that.
17:27:13 <maerwald> There is a very grumpy C coder on my LinkedIn feed, always riling about security and code correctness. Then one day he wrote why: his bug actually killed people, because it was some control system about pressure valves.
17:27:16 <dsal> With lines between them.
17:28:05 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
17:28:09 <dsal> monochrom: Like, imagine how hard this would be to read if that 'o' shared a line with any of the other code: https://www.irccloud.com/pastebin/lIpmTDCu/format.elm
17:28:18 <maerwald> but I don't know what he thinks of code formatters
17:28:40 <maerwald> then again: that's a solved issue in C anyway
17:29:15 <dsal> I really like tools that do static analysis and stuff in my code to tell me when I could do things better. That's an unreasonably hard problem to solve well, though.
17:29:49 Deide joins (~Deide@user/deide)
17:34:15 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
17:34:59 <maerwald> I think the main question is: do you align code or just do syntactical indenting
17:36:35 euouae joins (~euouae@user/euouae)
17:36:50 <euouae> Hello
17:37:15 <euouae> I want to create a lazy list whose nth element is a function of its predecessor
17:37:21 × dajoer quits (~david@user/gvx) (Quit: leaving)
17:37:27 <monochrom> iterate
17:37:38 <euouae> What do you mean
17:37:49 <monochrom> Look for that function name in the standard library.
17:39:21 <euouae> Thank you !
17:39:53 <maerwald> @hoogle iterate
17:39:53 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a]
17:39:53 <lambdabot> Data.List iterate :: (a -> a) -> a -> [a]
17:39:53 <lambdabot> Data.List.NonEmpty iterate :: (a -> a) -> a -> NonEmpty a
17:40:27 <maerwald> @where hoogle
17:40:27 <lambdabot> http://haskell.org/hoogle http://hoogle.haskell.org http://fpcomplete.com/hoogle – See also Hayoo, which searches more packages: http://hayoo.fh-wedel.de/
17:40:40 <maerwald> hayoo is dead no?
17:40:44 × benin0369 quits (~benin@183.82.176.182) (Ping timeout: 268 seconds)
17:41:01 <maerwald> and the fpcomplete link too
17:41:16 <monochrom> yikes
17:41:44 <geekosaur> yeh, nobody's updated that
17:42:03 chomwitt joins (~chomwitt@athedsl-32487.home.otenet.gr)
17:42:24 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:42:39 <euouae> Has anyone tried Haskell on a supercomputer?
17:42:48 <geekosaur> @where+ hoogle https://hoogle.haskell.org see also https://haskell.org/hoogle which searches a different default set of libraries
17:42:48 <lambdabot> I will remember.
17:43:04 <geekosaur> define supercomputer
17:43:15 <maerwald> for me, both links are the same
17:43:33 <geekosaur> interesting, maybe they made the old one go away
17:43:34 <maerwald> haskell.org/hoogle redirects to hoogle.haskell.org
17:43:40 <euouae> Hmm I’m trying to run a lot of computations and get an answer
17:43:46 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds)
17:43:53 <euouae> for now I have like 100 cores etc
17:43:56 <geekosaur> @where+ hoogle https://hoogle.haskell.org
17:43:56 <lambdabot> Nice!
17:44:47 maxie joins (~IceChat95@45.100.3.196)
17:44:49 <dmj`> Someone should write a library for parsing XML with GHC.Generics
17:45:46 <geekosaur> iirc ghc's performance gets worse the more cores you have :( (but maybe this has improved, that was around 7.x)
17:46:06 <geekosaur> mostly because of stop-the-world gc, though
17:46:39 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
17:46:51 <euouae> Okay interesting
17:46:59 <davean> It gets harder to make it perform well with more cores, it doesn't inhernety not perform well.
17:47:06 <maerwald> dmj`: why are you using xml :>
17:47:08 <davean> But no super computing task is single process
17:47:21 <euouae> Davean my knowledge is limited
17:47:22 <davean> I mean if you could fit it on one system it wouldn't really be using a modern supercomputer
17:47:50 <euouae> I am not great at Haskell and never programmed for supercomputers before
17:48:57 favonia joins (~favonia@user/favonia)
17:49:49 <euouae> But Haskell is really attractive for math
17:49:52 <davean> I think I've heard of some super computer Haskell use. I'd say everything to do with super computers is pretty definitionally specialized
17:50:17 <euouae> Yeah basically you need to be very knowledgeable in the domain davean
17:50:25 <euouae> And I’m just trying to get by
17:50:30 <maerwald> is this about bitcoin mining?
17:50:33 <davean> The domain, but also that specific computer
17:50:38 <davean> maerwald: I sure hope not!
17:50:46 <euouae> No lol it’s research
17:50:50 <dmj`> maerwald: AWS S3 still uses XML, https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html
17:51:17 <euouae> Bitcoin stuff is so scummy o want nothing with. It
17:52:26 <davean> maerwald: Many code bugs kill a large number of fractional people
17:52:28 mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
17:53:01 <euouae> Davean I don’t understand how situational it could be though
17:53:22 <euouae> what I have is some pure math computations applied to many different numbers (say)
17:53:54 <davean> euouae: The structure of the super computers differ, and the primary issue with super computers is communication
17:54:03 <davean> You optimize communication, not compute
17:54:11 <euouae> For now I’m on a single node
17:54:14 <davean> The network structures are all different for different optimalities
17:54:26 <davean> Yes, and theres no modern single node super computers
17:54:54 <euouae> It’s not necessarily a supercomputer since it’s single node but I’m starting from that
17:54:55 <davean> even on a single processor, you have to deal with inter-core communication issues, they're just less
17:55:07 <euouae> Inter core?
17:55:22 <euouae> Are you talking about worker communication?
17:55:27 oso joins (~oso@2601:58c:c080:a950:f275:2530:b398:680b)
17:55:28 <euouae> I’m not following
17:56:41 benin0369 joins (~benin@106.198.95.190)
17:57:54 <geekosaur> things like shared memory access
17:58:13 <euouae> Why is that important ?
17:58:29 <euouae> I think in my problem no memory is shared
17:58:48 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
17:58:54 <euouae> It’s like map f xs but parallel
17:59:09 <geekosaur> if you're handling out subproblems to different threads/cores to be worked on, then there is at least some shared memory
17:59:12 <euouae> More or less, maybe with a stop condition
17:59:36 <euouae> Okay but this is the most basic form of it right?
17:59:40 peterhil_ joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
18:00:20 benin03694 joins (~benin@183.82.177.8)
18:01:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:02:10 × benin0369 quits (~benin@106.198.95.190) (Ping timeout: 252 seconds)
18:02:10 benin03694 is now known as benin0369
18:02:19 × peterhil quits (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 268 seconds)
18:04:02 <euouae> Anyway those issues are part of the algorithm right?
18:04:14 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
18:04:14 <euouae> Not some other aspect of the peoblrm
18:04:20 <euouae> problem*
18:04:39 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
18:04:39 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
18:04:54 <davean> I mean your algorithm isn't determined
18:05:02 <davean> you design one to optimize for the HW
18:05:06 <geekosaur> you'd best hope they are, but that would mean it's been specialized to your supercomputer
18:05:27 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
18:05:51 <davean> what alg. is best depends on what your counting, and what the various costs are
18:06:02 <davean> along with your expected problem parameters
18:06:45 <euouae> So it’s really hard or are you just talking about the optimal case?
18:07:14 <monochrom> I would think "really hard" and "the optimal case" go well together.
18:07:55 <davean> Depends on the problem
18:08:14 <davean> if you're scaling it up past a very small case though I'm talking about what it usually takes to do a servicable job at it
18:08:49 <euouae> Davean are you speaking from experience with industry or research
18:08:59 derelict joins (~derelict@user/derelict)
18:09:12 <euouae> obviously any optimization means more profit in industry I imagine it’s really right
18:09:15 <davean> yes, though my research wasn't particularly compute intensive even if it was "AI"
18:09:43 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
18:09:50 <euouae> But in research there can be diminishing returns because your problem isn’t computationally feasible anyway after n=10 etc
18:10:22 <euouae> Okay… hmmm. Is it possible for me to get into this at all or am I hopeless?
18:10:36 <davean> euouae: I mean theres a huge difference between Floyd-Warshall and A*
18:10:43 <davean> euouae: but they both sorta solve the same problem space
18:10:44 <geekosaur> nobody here can tell that as we don't know your problem
18:10:59 <euouae> I don’t know those davean
18:11:31 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 250 seconds)
18:11:55 <euouae> Okay maybe I’ll ask again if I have something more to show
18:11:56 <davean> ANd oh no, Floyd-Warshall is O(|V|^3), and A* is only O(|E|)! Clearly A* is always better? Except not at all
18:12:22 fendor joins (~fendor@77.119.223.215.wireless.dyn.drei.com)
18:12:45 <euouae> Big constants davean?
18:12:45 <davean> well |E| can be ~ |V|^2, and what if you want the best paths, not approximations, but you're metric isn't admissible? And you want it for all of them? Or even just one side of those?
18:12:51 <davean> euouae: no, nothing to do with constants
18:13:25 × dunkeln quits (~dunkeln@188.71.231.232) (Ping timeout: 268 seconds)
18:13:40 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
18:13:41 <davean> Algrithmicly Floyd-Warshall is the same complexity for some use cases, because while they solve the same-ish problems, they do it for different uses
18:13:57 <davean> if you do something |V|^2 |V times, thats |V|^3
18:14:17 <davean> But Floyd-Warshall requires more communication
18:14:27 <davean> A* is the "embarasingly" paralleler case
18:14:53 <davean> so if you're CPUs are very seperated, maybe you want to work more like that again, except not you can go back and plan the communication of F-W ...
18:15:40 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:16:14 <euouae> Oh man I’m not following
18:17:29 × mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving)
18:18:10 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
18:18:36 chris_ joins (~chris@81.96.113.213)
18:20:08 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds)
18:20:36 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
18:21:41 × euandreh quits (~euandreh@191.181.59.160) (Quit: WeeChat 3.2)
18:22:54 × euouae quits (~euouae@user/euouae) (Quit: Client closed)
18:23:34 × chris_ quits (~chris@81.96.113.213) (Ping timeout: 268 seconds)
18:29:59 zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
18:30:19 × Topsi quits (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de) (Quit: Leaving.)
18:31:29 pavonia joins (~user@user/siracusa)
18:33:26 × zangi quits (~zangi@103.154.230.230) (Ping timeout: 252 seconds)
18:33:29 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
18:34:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
18:35:30 chris_ joins (~chris@81.96.113.213)
18:35:31 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
18:36:29 dunkeln joins (~dunkeln@188.71.231.232)
18:37:58 chris_ joins (~chris@81.96.113.213)
18:38:46 × Null_A quits (~null_a@2601:645:8700:2290:34e6:e307:f490:7d07) (Remote host closed the connection)
18:40:46 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
18:41:58 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
18:43:27 × matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in)
18:44:47 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
18:44:49 matijja joins (~matijja@193.77.181.201)
18:45:17 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
18:46:51 chris_ joins (~chris@81.96.113.213)
18:51:27 × chris_ quits (~chris@81.96.113.213) (Ping timeout: 255 seconds)
18:55:01 × dwt_ quits (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 268 seconds)
18:59:40 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
19:01:27 hseg joins (~gesh@185.120.126.10)
19:01:36 dwt_ joins (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
19:02:31 euouae joins (~euouae@user/euouae)
19:02:37 × gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection)
19:02:41 h98 joins (~h98@187.83.249.216.dyn.smithville.net)
19:03:36 gioyik joins (~gioyik@gateway/tor-sasl/gioyik)
19:04:02 <euouae> Hello why am I getting a stack overflow for this? sum $ map f [T x y z | x<-xs, y<-xs, z<-xs ] where xs has 256 elements
19:04:22 <euouae> and f calculates the area of the triangle with vertices x y and z
19:04:25 <Hecate> euouae: stack or heap?
19:04:34 <euouae> Says stack on Gucci
19:04:36 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:04:37 <euouae> Ghci
19:05:44 <davean> 256^3?
19:05:47 <h98> 256^3 = 16,777,216
19:05:57 <euouae> I was hoping that it wouldn’t have to expand a 256^3 list before summing
19:06:03 <geekosaur> is this sum being foldl again?
19:06:23 <euouae> Are you asking me?
19:06:30 <geekosaur> no
19:07:00 <hseg> hi. have this generator http://ix.io/3tqe, and I would like to generalize it so its input generators can depend on each other's results (i.e. want to be able to pass [a -> Gen a])
19:07:11 <Rembane> euouae: What happens if you replace sum with foldr1 (+) ?
19:07:20 <hseg> have tried just doing that, but it involves a lot of churn
19:07:26 <hseg> is there a more mtl'y way of writing this that can help avoid this churn
19:07:28 <hseg> ?
19:07:46 × dwt_ quits (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 246 seconds)
19:08:18 <Hecate> euouae: until you're on the version of GHC that has sum strict without optimisations, please enable them when you do stuff like that, otherwise space leaks will knock at your door
19:09:10 <geekosaur> well, you also have to be on a version of ghc which allows optiimization in ghci
19:09:11 <euouae> Okay so 8.6.5 is old
19:09:31 chris_ joins (~chris@81.96.113.213)
19:09:45 <euouae> Rembane got same thing much later
19:10:05 <Rembane> euouae: Got it!
19:10:06 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
19:10:09 <euouae> Ok I guess I have to enable optimizations
19:10:13 <euouae> Got what ?
19:10:23 <davean> foldr' (+) 0 instead of sum sohuld fix it also
19:11:22 <davean> (That doesn't require optimizations)
19:11:36 <maerwald> anyone good with libarchive? Do you have a guarantee that when reading list of archive entries that the first entry is the root folder (if any)?
19:12:31 <davean> maerwald: I certainly can make a tar that thats not true of.
19:12:37 × dunkeln quits (~dunkeln@188.71.231.232) (Ping timeout: 268 seconds)
19:12:48 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
19:12:54 <maerwald> yeah... I want to strip the root folder, but libarchive API doesn't have that
19:12:59 <davean> libarchive would have to pre-read the entire tar to avoid it, at best
19:13:01 juhp joins (~juhp@128.106.188.66)
19:13:27 <geekosaur> and there are versions of tar that re-output a folder after its contents to allow the other end to more easily set mtime etc.
19:13:38 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
19:14:17 <maerwald> the alternative is to unpack as-is, make sure you're on the same device and then do an atomic move operation, stripping the root folder away
19:14:24 <euouae> Davean also gives me stack overflow
19:14:27 <maerwald> but on windows, any file operation is doomed to have locking issues
19:14:28 × benin0369 quits (~benin@183.82.177.8) (Ping timeout: 268 seconds)
19:14:46 <euouae> You might be able to hack libarchive
19:14:51 <maerwald> no time
19:15:17 chris_ joins (~chris@81.96.113.213)
19:16:30 <davean> maerwald: Conceptually you'd have to do 2 passes over a tar for that, at best
19:16:51 <maerwald> I think the idea would be to lazily read all entries... fmap over them and strip the root dir, lazily create a new tar archive from the entries and then lazily unpack it
19:17:05 <davean> why create a new tar archive?
19:17:07 <euouae> Man pages are outdated
19:17:11 <davean> why not just process them as you unpack?
19:17:14 <euouae> Maybe read the source code
19:17:16 <maerwald> davean: there's no function to unpack from entries
19:17:44 <h98> euouae did you try foldr (\x y -> (f x) + y) 0 [T x y z ....]?
19:18:46 <euouae> Maerwald: seems related https://github.com/libarchive/libarchive/wiki/WishList#seek-in-archives
19:19:05 <euouae> H98 would thy be better?
19:19:23 <maerwald> euouae: the haskell bindings might not be exhaustive
19:19:48 × chris_ quits (~chris@81.96.113.213) (Ping timeout: 255 seconds)
19:19:53 <euouae> Yeah you’d have to make that but even then I’m painting to the fact that it’s on a wishlist maereald
19:20:11 <maerwald> I'd have to write my own version of `toDisk :: Entry FilePath ByteString -> IO ()`
19:20:19 <maerwald> which sounds trivial, but isn't
19:20:39 <euouae> Go for a solution that isn’t efficient but works?
19:20:46 <maerwald> hardlinks, softlinks, preserving file properties
19:21:34 <euouae> H98 also gives stack overflow
19:21:55 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:23:00 AWizzArd_ is now known as AWizzArd
19:23:33 × AWizzArd quits (~code@gehrels.uberspace.de) (Changing host)
19:23:33 AWizzArd joins (~code@user/awizzard)
19:24:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:24:10 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:27:21 <euouae> So the issue is ghci being silly right
19:27:28 dwt_ joins (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
19:28:01 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds)
19:29:49 <h98> yeah I think so
19:29:51 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
19:29:52 <h98> I tried this: https://paste.tomsmeding.com/QVCoWxOz
19:30:05 × qbt quits (~edun@user/edun) (Quit: WeeChat 3.2)
19:30:14 <h98> if I compile and run it i get 6467616768 after a few seconds
19:30:26 <h98> if I call test in ghci I get a stack overflow
19:30:30 <h98> version 8.10.4
19:32:16 <euouae> Thank you !
19:32:27 <euouae> Did you have to enable optimizations ?
19:33:13 <h98> I have no idea how, so I don't think so
19:33:21 Erutuon joins (~Erutuon@user/erutuon)
19:34:14 <euouae> Thanks
19:34:22 <geekosaur> ghci can't do optimizations except in very recent versions
19:36:39 × maerwald quits (~maerwald@mail.hasufell.de) (Changing host)
19:36:39 maerwald joins (~maerwald@user/maerwald)
19:37:30 × alx741 quits (~alx741@186.178.109.120) (Ping timeout: 252 seconds)
19:38:00 <h98> oh but foldl' works
19:38:38 <h98> https://paste.tomsmeding.com/dLbV73r1 same thing, but no overflow in ghci
19:39:35 <h98> RWH p. 97 talks about this
19:42:33 Maxdamantus joins (~Maxdamant@user/maxdamantus)
19:42:52 <dsal> why is `sum` bad? Is this one of those things where fixing it breaks something probably nobody cares about?
19:44:39 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
19:46:05 _73 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net)
19:46:08 <monochrom> I compiled with -O, no stack overflow, in fact immediate answer.
19:46:47 <monochrom> main = print (let xs = [1..256] in sum [ x+y+z | x <- xs, y <- xs, z <- xs ])
19:46:59 <geekosaur> dsal, there was a whole discussion on -cafe about various things using foldl instead of foldl'
19:47:15 <geekosaur> and thereby being prone to stack overflows
19:47:28 <geekosaur> sum being the prime example
19:47:35 <_73> what is the right abstraction to avoid explicit recursion on a function using a monadic action. I tried to write it as a foldr but wasn't able to succeed. Here is my code that does use explicit recursion: http://dpaste.com/2SKMBLTA8
19:48:15 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
19:48:32 <dsal> :t foldM
19:48:33 <lambdabot> (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
19:48:48 <geekosaur> I think it comes down to nobody thought about it and the original Prelude was written for comprehensibility by newcomers rather than performance
19:49:05 <dsal> @src sum
19:49:06 <lambdabot> sum = foldl (+) 0
19:49:22 <monochrom> Oh don't worry about @src, it's independently handwritten.
19:49:28 <monochrom> Hell, s/worry/trust/
19:49:39 <dsal> Yeah. I just tend to assume it's a simplification for understanding.
19:49:57 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:50:10 <monochrom> Yeah, great educational tool.
19:50:44 <geekosaur> and @src is mostly lifted from the Report, and is similarly intended for reading rather than running
19:50:52 × paolino quits (~paolo@84.33.141.5) (Remote host closed the connection)
19:51:52 × oso quits (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Ping timeout: 246 seconds)
19:52:04 alx741 joins (~alx741@186.178.108.174)
19:52:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:52:17 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
19:52:32 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 252 seconds)
19:52:42 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
19:52:55 <_73> I got it work with foldM thanks
19:53:28 favonia joins (~favonia@user/favonia)
19:53:38 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 252 seconds)
19:56:51 × ziman quits (~ziman@user/ziman) (Ping timeout: 276 seconds)
19:57:11 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
19:57:17 ziman joins (~ziman@c25-5.condornet.sk)
19:57:47 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 255 seconds)
19:59:59 × ziman quits (~ziman@c25-5.condornet.sk) (Changing host)
19:59:59 ziman joins (~ziman@user/ziman)
20:00:53 <euouae> Heh I got “killed” after I run ghc
20:01:14 <euouae> What does that mean ?
20:01:29 <geekosaur> the OOM killer got you
20:01:50 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 255 seconds)
20:01:57 <geekosaur> i.e. the Linux kernel decided your process was eating too much memory and nuked it
20:03:39 <geekosaur> (or similar for OS X, etc.; only Windows will differ but it has its own way of dealing with that)
20:04:39 <euouae> Hmm alright the oom reaper
20:05:15 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 255 seconds)
20:06:33 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds)
20:07:44 juhp joins (~juhp@128.106.188.66)
20:09:27 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Quit: Leaving)
20:15:09 × euouae quits (~euouae@user/euouae) (Quit: Ping timeout (120 seconds))
20:15:31 lavaman joins (~lavaman@98.38.249.169)
20:15:51 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
20:16:07 <ddb> geekosaur: is that discussion about things using foldl instead of foldl' logged or archived anywhere?
20:17:23 <maerwald> can you have extaustiveness check with NamedFieldPuns?
20:18:25 ubert joins (~Thunderbi@91.141.42.221.wireless.dyn.drei.com)
20:18:25 <maerwald> let's say you have Foo = Foo { foo1 :: String, foo2 :: String, foo3 :: String } and you want to pattern match on it without relying on the order, but also make sure you don't miss something when a new record is added
20:19:21 me_ joins (~me@87-59-111-97-cable.dk.customer.tdc.net)
20:19:27 × me_ quits (~me@87-59-111-97-cable.dk.customer.tdc.net) (Client Quit)
20:19:49 <maerwald> Relying on order is shitty when all the records are of the same type
20:19:52 me_ joins (~me@87-59-111-97-cable.dk.customer.tdc.net)
20:20:06 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
20:20:12 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
20:20:33 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
20:20:58 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:21:18 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:22:19 <geekosaur> ddb, somewhere on the haskell-cafe mailing list archives
20:23:10 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
20:23:55 × me_ quits (~me@87-59-111-97-cable.dk.customer.tdc.net) (Remote host closed the connection)
20:24:06 favonia joins (~favonia@user/favonia)
20:25:36 zebrag joins (~chris@user/zebrag)
20:26:04 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
20:26:21 Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr)
20:30:18 × Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Remote host closed the connection)
20:30:19 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 268 seconds)
20:31:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:32:09 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
20:35:04 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
20:35:24 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
20:35:30 × BestSteve quits (~beststeve@220-135-3-239.HINET-IP.hinet.net) (Ping timeout: 245 seconds)
20:35:54 BestSteve joins (~beststeve@220-135-3-239.HINET-IP.hinet.net)
20:36:34 × xff0x_ quits (~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06) (Ping timeout: 240 seconds)
20:38:36 xff0x_ joins (~xff0x@185.65.135.235)
20:44:51 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
20:45:08 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
20:45:10 spruit11_ joins (~quassel@2a02:a467:ccd6:1:11d0:89ea:1c73:9299)
20:47:10 × BestSteve quits (~beststeve@220-135-3-239.HINET-IP.hinet.net) (Ping timeout: 245 seconds)
20:47:31 × spruit11 quits (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) (Ping timeout: 246 seconds)
20:48:54 × xff0x_ quits (~xff0x@185.65.135.235) (Ping timeout: 258 seconds)
20:48:54 BestSteve joins (~beststeve@2001-b011-0002-3b2a-06d9-f5ff-fe38-e249.dynamic-ip6.hinet.net)
20:50:48 xff0x_ joins (~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06)
20:51:36 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 255 seconds)
20:52:23 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
20:52:40 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
20:56:12 hexfive joins (~eric@50.35.83.177)
20:56:48 acidjnk_new joins (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de)
20:57:36 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
20:57:55 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
20:58:26 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
20:58:45 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
20:59:05 oso joins (~oso@2601:58c:c080:a950:f275:2530:b398:680b)
21:01:00 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
21:01:02 <hseg> feels like this can be expressed in standard terms, any ideas? http://ix.io/3tsp
21:01:20 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
21:02:17 <hseg> idea is to sum a list, then if possible without changing the sign, replace the last element by its difference from the sum so it all sums to 0
21:02:46 <hseg> (need to maintain signs, and the list is sorted by absolute value)
21:03:35 × dunj3 quits (~dunj3@2001:16b8:3046:8200:9324:28de:5bca:d5dc) (Remote host closed the connection)
21:05:07 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
21:05:27 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
21:05:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
21:06:05 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
21:06:47 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
21:07:07 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
21:07:50 <dsal> > let xs = init [1, 2, 3] in xs <> [0 - sum xs] -- hseg like this? I'm a bit confused by your specification.
21:07:51 <lambdabot> [1,2,-3]
21:08:01 Null_A joins (~null_a@2601:645:8700:2290:34e6:e307:f490:7d07)
21:08:49 <hseg> spec is: (assuming output is Just): ((==) `on` compare 0) xs (fixSum xs), sum (fixSum xs) == 0
21:09:35 <hseg> and I'm choosing to limit the cases i'm fixing to those (==) `on` init
21:10:37 <hseg> hrm. your code is probably clearer -- just need to compose with a guard to make sure it satisfies spec
21:10:52 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
21:10:54 <hseg> though if there were some way of avoiding the append, that would be nice
21:12:07 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
21:12:27 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
21:13:59 <EvanR> you want to change the last element of a list?
21:14:03 <hseg> y
21:14:07 <EvanR> oof
21:14:53 <hseg> could fix it so it's correct-by-construction, but that makes my generator code very ugly
21:14:57 <EvanR> can you designate the first element the element that needs to be changed
21:15:28 <hseg> nope -- sorted ascending by absolute value
21:15:44 <EvanR> how about descending
21:15:58 <hseg> and there's enough stuff depending on this already that I'd rather not push that redesign
21:16:46 <hseg> should just take the l and continue -- probably not going to be significant enough to matter
21:16:51 <hseg> (lists will be short)
21:17:09 <hseg> at least it's O(n) vs O(1), not O(n) vs O(n^k)
21:17:10 <EvanR> i like to split things up into steps rather than code golfing
21:17:30 <hseg> ?
21:17:44 <hseg> where are you seeing golfing in my code?
21:17:49 <EvanR> or in this case, perhaps write a combinator that traverses a list and uses a function argument to decide how to modify the last element
21:18:02 <EvanR> i only saw 1 line of code, so it seems like golf xD
21:18:10 <hseg> :)
21:18:44 <hseg> posted code earlier, but that could work
21:19:04 spruit11 joins (~quassel@2a02:a467:ccd6:1:617d:c9ec:74dc:292b)
21:19:05 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
21:19:24 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
21:19:42 <hseg> k, not bad enough to matter
21:19:43 <EvanR> a combination fold and specialized list reconstructor. And scanl may already be that
21:20:42 <davean> hseg: how does this handle the singleton list?
21:20:48 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:21:04 <hseg> [0] -> Just [0], [x] -> Nothing
21:21:14 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
21:21:30 × spruit11_ quits (~quassel@2a02:a467:ccd6:1:11d0:89ea:1c73:9299) (Ping timeout: 240 seconds)
21:21:31 <EvanR> oh failure, nvm
21:21:41 <davean> Oh damn, thats ... ok
21:21:53 argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar)
21:22:26 <EvanR> if you're changing the last element wouldn't [x] |-> Just [0]
21:22:36 <davean> EvanR: Thats why I asked!
21:23:01 × zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Ping timeout: 268 seconds)
21:23:11 <davean> I had suspicions about the spec
21:23:13 <hseg> no, because i need elementwise (==) `on` compare 0
21:23:37 <hseg> which is more important to me than success fixing the sum
21:24:30 <EvanR> less a spec and more a would be nice list xD
21:24:44 <davean> Yah, I think you need to think about your actual problem space hseg
21:24:52 <davean> I suspect you haven't come to understanding of your actual goals
21:25:26 <hseg> am writing a quickcheck generator. all I need is that it generate enough correct values quickly
21:25:42 <davean> No, thats not what you need for good quickchecks
21:25:54 <davean> Thats what you need for invalid quickchecks
21:26:09 <hseg> because I also need a good shrink?
21:26:18 <hseg> (need one regardless (: )
21:26:19 <davean> No, shrink is secondary and never required
21:26:41 <davean> Quickcheck generators have to cover the domain, or at least the preimage
21:26:54 <hseg> basically all I'm using this for is for randomly sampling the domain
21:27:11 <davean> But you've just described NOT sampling the domain
21:27:28 <davean> you'd just described sampling a particular subdomain of the domain
21:28:03 <davean> And even suggested it isn't the preimage
21:28:07 <davean> (strongly)
21:28:36 <davean> Making the quickcheck results close to meaingless
21:28:54 × cuz quits (~user@38.140.58.234) (Ping timeout: 268 seconds)
21:29:01 <hseg> perhaps. am not using the full power of quickcheck, regardless
21:29:11 <davean> This isn't about power, this is about validity
21:29:32 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
21:29:38 <hseg> yes? so I know I will get false positives/negatives
21:30:03 <davean> So whats the point of running this code at all? You know as much before it runs as after
21:30:08 <hseg> as long as I'm still having recognizable true negatives, I'm not worried about it
21:31:02 <hseg> I'm testing a hypothesis that an invariant I have in mind is fine enough to predict the value of a function
21:31:29 <hseg> so as long as my samplings show it isn't, I don't care that I haven't sampled the entire space
21:31:34 Erutuon joins (~Erutuon@user/erutuon)
21:31:35 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:31:42 <EvanR> maybe this is a probabalistic application
21:31:53 <hseg> not probabilistic. hypothesis testing
21:32:08 <EvanR> counterexample finding?
21:32:16 <hseg> exactly
21:32:20 <EvanR> cool
21:32:28 <EvanR> it only takes 1 xD
21:32:34 <hseg> exactly
21:32:46 <hseg> and unfortunately, I have >>>1
21:33:37 <hseg> so I need to refine the invariant I'm using
21:33:52 <hseg> not clear how, though
21:34:29 <hseg> welp. that's what research is for, ig
21:34:31 <EvanR> eventually you will not find any counterexamples
21:34:54 <hseg> yeah. am hoping that by then, will have actual proof that my invariant works
21:36:12 <hseg> especially considering this is trying to give a closed form for a recursive formula, have high hopes it is possible
21:39:48 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
21:39:53 cuz joins (~user@38.140.58.234)
21:40:06 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
21:40:50 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
21:41:52 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:42:57 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
21:43:11 × fendor quits (~fendor@77.119.223.215.wireless.dyn.drei.com) (Read error: Connection reset by peer)
21:44:16 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
21:44:46 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:45:01 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
21:45:32 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 265 seconds)
21:45:32 × cuz quits (~user@38.140.58.234) (Ping timeout: 265 seconds)
21:45:57 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
21:46:28 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
21:46:29 × ubert quits (~Thunderbi@91.141.42.221.wireless.dyn.drei.com) (Remote host closed the connection)
21:50:33 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 255 seconds)
21:51:06 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
21:53:52 pesada joins (~agua@2804:18:70:635e:1:0:3619:5a18)
21:54:45 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
21:55:58 × agua quits (~agua@2804:14c:8793:8e2f:642c:be4c:c775:de87) (Ping timeout: 256 seconds)
21:57:09 agua joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04)
21:57:36 bpv joins (~bryce@207.73.178.205)
21:58:23 burnsidesLlama joins (~burnsides@client-8-87.eduroam.oxuni.org.uk)
21:59:00 <bpv> How is it going?
22:00:05 × bpv quits (~bryce@207.73.178.205) (Quit: WeeChat 3.2)
22:00:18 × hseg quits (~gesh@185.120.126.10) (Quit: WeeChat 3.2)
22:00:27 × pesada quits (~agua@2804:18:70:635e:1:0:3619:5a18) (Ping timeout: 255 seconds)
22:01:25 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:02:42 × burnsidesLlama quits (~burnsides@client-8-87.eduroam.oxuni.org.uk) (Ping timeout: 255 seconds)
22:04:32 aegon joins (~mike@174.127.249.180)
22:05:04 vemek1 is now known as vemek
22:07:21 elf_fortrez joins (~elf_fortr@adsl-72-50-4-119.prtc.net)
22:07:31 Topsi joins (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de)
22:07:41 × elf_fortrez quits (~elf_fortr@adsl-72-50-4-119.prtc.net) (Client Quit)
22:08:29 benin0369 joins (~benin@183.82.177.8)
22:09:31 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:09:43 cheater joins (~Username@user/cheater)
22:11:38 × aegon quits (~mike@174.127.249.180) (Killed (NickServ (GHOST command used by aegon_)))
22:12:04 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 268 seconds)
22:12:17 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
22:12:36 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
22:14:51 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
22:17:36 favonia joins (~favonia@user/favonia)
22:23:21 dre joins (~dre@2001:8003:c932:c301:117d:15f9:de03:4d49)
22:24:45 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
22:30:25 × favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds)
22:31:56 favonia joins (~favonia@user/favonia)
22:33:51 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
22:34:16 × Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 268 seconds)
22:35:57 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
22:43:02 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
22:45:14 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
22:47:08 zebrag joins (~chris@user/zebrag)
22:48:11 lavaman joins (~lavaman@98.38.249.169)
22:48:38 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:49:30 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
22:49:48 favonia joins (~favonia@user/favonia)
22:52:30 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
22:52:43 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
22:57:29 × Topsi quits (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de) (Read error: Connection reset by peer)
22:58:26 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
22:58:57 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
22:59:35 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
22:59:38 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:00:34 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
23:00:37 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
23:02:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:05:06 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
23:08:29 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
23:11:08 Jeanne-Kamikaze joins (~Jeanne-Ka@69.4.234.87)
23:11:51 cjb joins (~cjb@user/cjb)
23:12:43 × phma quits (phma@2001:5b0:211f:1178:dd66:934e:c06f:5919) (Read error: Connection reset by peer)
23:13:38 phma joins (~phma@host-67-44-208-230.hnremote.net)
23:18:02 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
23:20:14 × vysn quits (~vysn@user/vysn) (Remote host closed the connection)
23:21:29 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:23:27 × acidjnk_new quits (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
23:27:44 Codaraxis_ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
23:28:04 chris_ joins (~chris@81.96.113.213)
23:28:57 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
23:29:17 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
23:29:55 chris_ joins (~chris@81.96.113.213)
23:31:37 × Codaraxis quits (~Codaraxis@user/codaraxis) (Ping timeout: 268 seconds)
23:31:58 nova joins (novasenco@user/nova)
23:32:36 TranquilEcho joins (~grom@user/tranquilecho)
23:33:28 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 268 seconds)
23:34:03 <nova> I am currently using arch with ghcup and cabal, but cabal takes SO long to install packages that it is simply not usable. I am about to try nixos or gentoo, and I was wondering if anyone here uses their respective package managers to manager haskell packages (pandoc, pandoc-citeproc [this takes forever to recompile pandoc], xmonad, xmobar, etc). If so, does one hold an edge over the other?
23:35:34 × chomwitt quits (~chomwitt@athedsl-32487.home.otenet.gr) (Remote host closed the connection)
23:36:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
23:37:24 <nova> I was using pacman, but I had to remove all of my haskell packages because it was even worse than ghcup (but at least it was fast)
23:38:59 pesada joins (~agua@2804:18:70:635e:1:0:3619:5a18)
23:39:30 <sclv> we’re developers here mainly. compile times are what they are
23:41:16 <dsal> nova: I'm a pretty big fan of nixos. Nonetheless, first compilation can take a bit.
23:41:29 <davean> You compile things once and you're done, meh?
23:42:35 <nova> what about upgrades
23:42:36 × agua quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 255 seconds)
23:42:36 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
23:42:53 agua joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04)
23:43:12 <dsal> Upgrades of what?
23:43:34 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
23:43:46 <yin[m]> any way we can avoid having to add `Show a =>` to a bunch of type signatures when "No instance for (Show a) arising from a use of ..." just for a quick Debug.trace?
23:43:53 <dsal> I do nix updates all the time because I like giving my computer busy work. heh. They're reversible, though. If things go wrong, I can undo them.
23:44:17 <dsal> yin[m]: You need some way to represent the values you're tracing.
23:44:49 <davean> nova: uh, upgrades do the amount of work in the delta of the packages changed?
23:45:19 × pesada quits (~agua@2804:18:70:635e:1:0:3619:5a18) (Ping timeout: 246 seconds)
23:45:22 <nova> does nix have to rebuild after downloading deltas?
23:45:44 <dsal> nix can use binaries if they're available. It'll build if they're not.
23:45:45 <davean> If it doesn't have the builds cached
23:46:50 <yin[m]> sure, and I know they are, but ghc complains that if what I'm trying to show is an a and the funcion I'm in doesn't have the Show constraint in it, i cant see it. are my only options to comment all the relevant type signatures or add the Show constraint everywhere? isn't there something like an unsafeShow?
23:47:19 <yin[m]> i just want a quick print for debugging purposes
23:47:48 <yin[m]> * sure, and I know they are, but ghc complains that if what I'm trying to show is an a and the funcion I'm in doesn't have the Show a => constraint in it, i cant see it. are my only options to comment all the relevant type signatures or add the Show constraint everywhere? isn't there something like an unsafeShow?
23:48:46 pesada joins (~agua@2804:18:70:635e:1:0:3619:5a18)
23:49:32 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
23:51:36 × agua quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 255 seconds)
23:51:41 <geekosaur> yin[m]: absent a Show constraint there may not even be code to do the Show
23:54:02 <geekosaur> more correctly, without that constraint ghc doesn't know that the type involved has the code to do Show — and more to the point, doesn't have access to that code
23:54:20 <geekosaur> (as ghc implements constraints)
23:55:13 favonia joins (~favonia@user/favonia)
23:56:52 <geekosaur> a theoretical unsafeShow would still require some way to get access to the Show code for the type. in particular if it knows the type only at runtime, it would have to be passed in via a dictionary still
23:59:31 <davean> geekosaur: how dirty should I be in answering how to do that?

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