Home liberachat/#haskell: Logs Calendar

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

00:00:47 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
00:04:56 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
00:11:31 × maerwald quits (~maerwald@user/maerwald) (Ping timeout: 258 seconds)
00:12:13 × Guest8638 quits (~Guest86@50.47.115.102) (Ping timeout: 246 seconds)
00:15:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:16:34 × mrus quits (~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820) (Ping timeout: 240 seconds)
00:16:54 Maxdaman1us joins (~Maxdamant@user/maxdamantus)
00:16:55 lavaman joins (~lavaman@98.38.249.169)
00:16:56 derelict joins (~derelict@user/derelict)
00:18:20 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
00:18:42 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds)
00:21:29 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
00:24:09 Null_A joins (~null_a@2601:645:8700:2290:f84f:8a6f:2960:e8a4)
00:24:45 × DNH quits (~DNH@2a02:8108:1100:16d8:c4df:67d7:d0ec:2764) (Quit: Textual IRC Client: www.textualapp.com)
00:27:01 Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net)
00:27:59 × turlando quits (~turlando@user/turlando) (Ping timeout: 268 seconds)
00:39:27 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
00:39:53 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
00:40:27 machinedgod joins (~machinedg@24.105.81.50)
00:41:39 Erutuon joins (~Erutuon@user/erutuon)
00:44:07 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
00:46:22 × Null_A quits (~null_a@2601:645:8700:2290:f84f:8a6f:2960:e8a4) (Remote host closed the connection)
00:50:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
00:52:21 Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
00:54:24 orzo_ is now known as orzo
00:57:17 × lbseale_ quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
01:10:04 <lechner> Hi, would someone please be so kind and show me how to use iterateM_ here. I am having a hard time with it. https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L100
01:11:26 maerwald joins (~maerwald@mail.hasufell.de)
01:14:15 × zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
01:14:20 <davean> lechner: you haven't said what you're trying to do because theres not even an attempt to use iterateM_ there
01:15:28 pesada joins (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100)
01:18:24 <lechner> well, i'd like to implement a counter for the files received. someone here kindly recommended iterateM_ but i am a noobie. i watched this video but can't even separate out the function after 'forever' https://www.youtube.com/watch?v=CFnx1_UjwXs
01:18:38 × agua quits (~agua@2804:18:7e:a02e:1:0:239f:a7bb) (Ping timeout: 255 seconds)
01:18:58 <lechner> the forever is in my code
01:19:48 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 255 seconds)
01:21:11 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
01:22:15 × maerwald quits (~maerwald@mail.hasufell.de) (Ping timeout: 268 seconds)
01:22:36 × Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_)
01:24:45 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
01:25:39 agua joins (~agua@2804:18:7e:a02e:1:0:239f:a7bb)
01:25:54 ukari joins (~ukari@user/ukari)
01:26:04 × xff0x quits (~xff0x@2001:1a81:53d5:b900:59f3:4e1e:9577:2243) (Ping timeout: 246 seconds)
01:28:06 xff0x joins (~xff0x@2001:1a81:5219:9d00:b696:f328:1841:5724)
01:28:10 × pesada quits (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 246 seconds)
01:29:56 <dsal> lechner: It's flipped for your needs, so something like: flip iterateM_ 1 $ \n -> do ...
01:30:57 <dsal> Then like `pure n'` at the end once you've decided whether there's a message or not.
01:32:42 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
01:33:22 <lechner> dsal: why is it flipped, please?
01:33:43 <dsal> Or you make `county n = iterateM_ (\x -> a x >> pure (x +1)) 0` and just call `county $ \x -> do ...`
01:34:11 <dsal> Well, the initial argument goes at the end and that's pretty awkward to supply with a do block.
01:34:48 <geekosaur> did you switch n and a there?
01:35:00 <lechner> ah, yes! that was one of my many issues
01:35:49 × shapr quits (~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
01:38:05 neurocyte1 joins (~neurocyte@94.16.90.109)
01:38:05 × neurocyte1 quits (~neurocyte@94.16.90.109) (Changing host)
01:38:05 neurocyte1 joins (~neurocyte@user/neurocyte)
01:40:07 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
01:40:45 × neurocyte quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
01:40:45 neurocyte1 is now known as neurocyte
01:41:11 <dsal> Heh. Yeah, I'm barely conscious right now. heh
01:42:05 <dsal> `county a` for passing an iteration count to the action `a`. If every iteration will process a message, it's probably a useful abstraction that will make it easier to read your stuff.
01:42:15 <dsal> Also maybe name it something not stupid.
01:44:19 <dsal> lechner: Consider that abstraction, though. Whatever bugs I typed into irc are there to help you learn.
01:48:03 × smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
01:49:50 pesada joins (~agua@2804:18:48:588b:1:0:277e:35b0)
01:50:08 × agua quits (~agua@2804:18:7e:a02e:1:0:239f:a7bb) (Ping timeout: 255 seconds)
01:50:46 matsurago joins (~matsurago@p0111162-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp)
01:51:29 × derelict quits (~derelict@user/derelict) (Ping timeout: 255 seconds)
01:54:28 <lechner> dsal: yay, it compiled. thanks so much! i am on a production system and will test it on Sunday. i'll also look into abstractions like you suggested. (and read up on 'pure', as i tried to use 'return')
01:58:07 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:59:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
02:00:17 maerwald joins (~maerwald@mail.hasufell.de)
02:02:35 andrews joins (~andrews@user/andrews)
02:02:56 dajoer joins (~david@user/gvx)
02:05:15 × andrews quits (~andrews@user/andrews) (Client Quit)
02:06:31 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds)
02:11:57 × alx741 quits (~alx741@181.196.68.89) (Quit: alx741)
02:12:08 <sm> hey all. Any doctest users aware of a change in default scope/binding rules with GHC 9.0 ? https://github.com/sol/doctest/issues/301
02:15:02 alx741 joins (~alx741@181.196.68.89)
02:15:20 × td_ quits (~td@94.134.91.148) (Ping timeout: 255 seconds)
02:15:55 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:16:57 td_ joins (~td@muedsl-82-207-238-255.citykom.de)
02:16:59 × zebrag quits (~chris@user/zebrag) (Read error: Connection reset by peer)
02:18:34 <lechner> sm: hi, i just connected a few dots. thanks for hledger!
02:19:36 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
02:20:23 sim590 joins (~simon@23.233.248.248)
02:20:56 keutoi joins (~keutoi@157.48.206.170)
02:21:28 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:25:50 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
02:27:23 <janus> sm: do you think it might be related to "GADT constructor types now properly adhere to The forall-or-nothing rule" ?
02:28:05 <sm> lechner: youre welcome!
02:28:31 <sm> janus: hmm let me read up on that
02:30:49 <sm> another possible thing I've noticed, derived JSON instances preserving the order of fields with GHC 9.0 (despite same versions of aeson) ?
02:31:07 <sm> with GHC 8.10 they seemed randomised
02:34:11 __xor is now known as _xor
02:37:29 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
02:39:57 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
02:40:49 lavaman joins (~lavaman@98.38.249.169)
02:42:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:45:30 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
02:46:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:47:07 Maxdaman1us is now known as Maxdamantus
02:47:09 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
02:47:41 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:02:36 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
03:05:59 img joins (~img@user/img)
03:18:16 <dsal> lechner: `return` is almost always just a longer, more confusing way of spelling `pure`
03:19:24 <sm> janus: I don't think so
03:20:18 <janus> i wonder if it is really a doctest issue? because surely, doctest shouldn't worry too much about 'low-level' things such as binding names?
03:20:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
03:20:55 <janus> if it is related to simplified subsumption or the for-all issue, it should be reproducable outside a doctest...
03:21:26 <janus> oh well, i don't know what i am saying, just thinking out loud ;)
03:21:48 <sm> yes.. I must dig deeper
03:39:41 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
03:41:37 × Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection)
03:54:52 derelict joins (~derelict@user/derelict)
03:58:16 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 268 seconds)
03:59:01 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
04:01:43 lavaman joins (~lavaman@98.38.249.169)
04:06:48 <sm> well it's simply that the bindings in current module (in which the doctests are embedded are not in scope by default
04:07:06 <sm> which is.. inconvenient
04:09:26 <janus> oh, now i see why you think it is a doctest issue
04:09:58 <janus> i think one argument for the doctest-like in cabal-extras is that it is more robust... i havn't tried it though
04:16:06 mrus joins (~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820)
04:17:44 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 255 seconds)
04:32:36 alekhine joins (~alekhine@c-73-38-152-33.hsd1.ma.comcast.net)
04:34:54 jakalx parts (~jakalx@base.jakalx.net) ()
04:35:46 Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
04:45:48 × Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection)
04:48:35 Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
04:50:46 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
04:51:20 vysn joins (~vysn@user/vysn)
04:53:06 × Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Ping timeout: 255 seconds)
05:00:08 jakalx joins (~jakalx@base.jakalx.net)
05:03:12 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
05:03:40 xkuru joins (~xkuru@user/xkuru)
05:04:06 × xkuru quits (~xkuru@user/xkuru) (Client Quit)
05:05:12 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:07:39 xkuru joins (~xkuru@user/xkuru)
05:09:22 × xkuru quits (~xkuru@user/xkuru) (Client Quit)
05:09:47 × hexeme quits (~hexeme@user/hexeme) (Quit: co'o ro do)
05:11:18 hexeme joins (~hexeme@user/hexeme)
05:17:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:21:42 Guest9 joins (~Guest9@43.242.116.127)
05:26:35 × keutoi quits (~keutoi@157.48.206.170) (Ping timeout: 255 seconds)
05:34:49 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
05:34:53 Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
05:45:29 × hexeme quits (~hexeme@user/hexeme) (Quit: co'o ro do)
05:45:35 lavaman joins (~lavaman@98.38.249.169)
05:47:51 hexeme joins (~hexeme@user/hexeme)
05:48:37 × alekhine quits (~alekhine@c-73-38-152-33.hsd1.ma.comcast.net) (Quit: Konversation terminated!)
05:48:49 qbt joins (~edun@user/edun)
05:49:46 × dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
05:50:15 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
05:50:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
05:51:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
05:53:52 × Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection)
05:58:31 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
05:58:49 img joins (~img@user/img)
06:02:07 dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
06:02:09 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
06:02:09 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
06:02:09 turlando joins (~turlando@user/turlando)
06:03:48 × sim590 quits (~simon@23.233.248.248) (Ping timeout: 258 seconds)
06:06:20 lavaman joins (~lavaman@98.38.249.169)
06:06:28 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
06:07:01 lavaman joins (~lavaman@98.38.249.169)
06:07:20 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:11:19 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
06:12:01 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
06:14:10 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Reconnecting)
06:14:25 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
06:15:18 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Client Quit)
06:15:33 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
06:15:50 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
06:15:50 zfnmxt joins (~zfnmxtzfn@user/zfnmxt)
06:21:51 × zmt00 quits (~zmt00@user/zmt00) (Quit: Gone.)
06:24:46 zmt00 joins (~zmt00@user/zmt00)
06:26:36 × mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving)
06:31:12 dunkeln joins (~dunkeln@94.128.224.230)
06:34:46 gehmehgeh joins (~user@user/gehmehgeh)
06:36:48 × earthy quits (~arthurvl@deban2.xs4all.space) (Quit: WeeChat 2.3)
06:42:34 earthy joins (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0)
06:45:55 keutoi joins (~keutoi@157.48.202.216)
06:56:14 lavaman joins (~lavaman@98.38.249.169)
07:00:55 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
07:01:26 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
07:01:29 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
07:02:14 lavaman joins (~lavaman@98.38.249.169)
07:04:14 × Guest9 quits (~Guest9@43.242.116.127) (Ping timeout: 255 seconds)
07:11:42 × matsurago quits (~matsurago@p0111162-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp) (Quit: Leaving)
07:18:49 fef joins (~thedawn@user/thedawn)
07:24:14 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
07:24:49 geekosaur joins (~geekosaur@xmonad/geekosaur)
07:26:53 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
07:30:58 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
07:31:04 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
07:33:03 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
07:33:10 agua joins (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100)
07:33:39 hololeap joins (~hololeap@user/hololeap)
07:35:33 × pesada quits (~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 255 seconds)
07:35:39 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
07:39:41 <arahael> I'm trying to learn how to use "Arrows" (aka HXT), in order to have an 'elegant' way to convert my data types to XML. To do this, I've tried to define a type class that defines `class ToXml a where xml :: IOStateArrow s a XmlTree`, but I don't think I'm doing it right and I would need a phantom-type anyway to use a type class like that. How should I be doing this?
07:41:09 <arahael> I want to allow my "toXml" routines to potentially use state as they may need to obtain more informatio than what is captured in my values. (Eg, to look up and resolve stuff from a database)
07:42:31 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
07:43:15 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:46:05 acidjnk joins (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de)
07:47:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:49:18 dragestil joins (~znc@user/dragestil)
07:50:17 <arahael> I'm thinking of avoiding arrows entirely, and just define xml like so: `xml :: a -> State s XmlTree`
07:50:31 <arahael> (Well, XmlTrees, really)
07:50:38 × dunkeln quits (~dunkeln@94.128.224.230) (Ping timeout: 265 seconds)
07:51:05 <c_wraith> "avoid them entirely" has been my experience with arrows
07:52:35 <arahael> Heh. Thing is, arrows _sound_ like they'd be nice for what is largely xml transformations.
07:54:35 × benin0369 quits (~benin@183.82.204.139) (Ping timeout: 258 seconds)
07:56:39 fendor joins (~fendor@77.119.192.173.wireless.dyn.drei.com)
07:57:47 × _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2)
07:58:55 _xor joins (~xor@74.215.232.67)
07:59:31 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
07:59:50 benin0369 joins (~benin@183.82.206.198)
08:00:21 × HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection)
08:00:53 Pickchea joins (~private@user/pickchea)
08:01:47 × GIANTWORLDKEEPR_ quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
08:02:37 HarveyPwca joins (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
08:02:53 × HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection)
08:04:20 <arahael> Yeah, I can't even find an example for this, I'm going to give up on using arrows for transforming to xml.
08:05:27 chomwitt joins (~Pitsikoko@athedsl-32487.home.otenet.gr)
08:07:11 hendursa1 joins (~weechat@user/hendursaga)
08:09:45 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:10:59 dunkeln_ joins (~dunkeln@94.128.224.230)
08:13:56 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:15:45 × favonia quits (~favonia@user/favonia) (Ping timeout: 250 seconds)
08:17:13 <arahael> Yep, I think I should definitely just use the `xml :: a -> State MyState XmlTrees` design. Less flexible, but more sane.
08:17:35 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:38 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:18:30 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
08:21:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
08:23:11 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:26:16 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
08:26:24 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
08:28:09 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:28:15 eggplant_ joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:29:33 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
08:29:36 Lord_of_Life_ is now known as Lord_of_Life
08:30:06 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
08:30:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:32:42 × eggplant_ quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
08:35:42 Deide joins (~Deide@217.155.19.23)
08:35:42 × Deide quits (~Deide@217.155.19.23) (Changing host)
08:35:42 Deide joins (~Deide@user/deide)
08:38:04 Ouroborosie joins (~pjetcetal@128-71-13-182.broadband.corbina.ru)
08:39:21 zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
08:42:23 Voxelman joins (~Voxelman@185.254.75.32)
08:46:01 <arahael> Actually I'm weirdly stumped, I've fallen into a deep hole: How do I print XML? I've been parsing with HXT for most of my programs, so ideally I'd like to use the same data types, but how do I print it?
08:46:28 <arahael> This page has some examples: https://hackage.haskell.org/package/hxt-9.3.1.22/docs/Text-XML-HXT-Arrow-WriteDocument.html
08:46:51 sagax joins (~sagax@213.138.71.146)
08:47:13 <arahael> But... They don't work, at all, when using the sample XmlTree: foo = Ntree (XTag (mkName "foo") []) []
08:47:21 <arahael> The writeDocument just does nothing at all.
08:47:36 <arahael> *NTree
08:49:33 <arahael> So I'm completely stumped as to why this doesn't work: runX (arr (const foo) >>> writeDocument [] "")
08:49:45 <arahael> (It compiles and runs, though(!))
08:51:04 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:52:55 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
08:54:18 × azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Ping timeout: 240 seconds)
08:54:42 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
08:54:42 <arahael> I think I need to give up on this HXT, it seems seriously badly documented. :( Maybe I should try something like xml-hamlet.
08:55:01 azeem joins (~azeem@176.200.202.21)
08:56:41 × superbil quits (~superbil@1-34-176-171.HINET-IP.hinet.net) (Quit: WeeChat 3.1)
08:58:20 × mcfrdy quits (uid507892@user/mcfrdy) ()
08:59:26 × Erutuon quits (~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
08:59:29 <arahael> Oh, wow, just got output.
09:01:48 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
09:03:45 × Pickchea quits (~private@user/pickchea) (Ping timeout: 255 seconds)
09:04:24 <arahael> Yep, seems the only thing I was missing was the root node. HXT just silently ignores that.
09:06:15 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:07:33 × dunkeln_ quits (~dunkeln@94.128.224.230) (Quit: leaving)
09:10:26 × azeem quits (~azeem@176.200.202.21) (Read error: Connection reset by peer)
09:10:42 azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
09:13:23 × xff0x quits (~xff0x@2001:1a81:5219:9d00:b696:f328:1841:5724) (Ping timeout: 255 seconds)
09:14:17 xff0x joins (~xff0x@2001:1a81:5219:9d00:3d14:ef54:1c92:a192)
09:18:14 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
09:18:20 × acidjnk quits (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
09:18:27 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
09:18:57 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
09:21:34 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
09:23:06 mcfrdy joins (~mcfrdy@user/mcfrdy)
09:23:17 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
09:28:10 fef joins (~thedawn@user/thedawn)
09:29:40 Feuermagier joins (~Feuermagi@user/feuermagier)
09:31:21 amanr joins (~therojjha@20.204.87.0)
09:32:14 × _xor quits (~xor@74.215.232.67) (Quit: brb)
09:32:28 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
09:33:09 × Codaraxis quits (~Codaraxis@user/codaraxis) (Remote host closed the connection)
09:33:34 Codaraxis joins (~Codaraxis@user/codaraxis)
09:42:26 _xor joins (~xor@74.215.232.67)
09:47:18 oxide joins (~lambda@user/oxide)
09:50:23 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
09:53:10 × _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2)
09:53:24 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
09:54:15 lavaman joins (~lavaman@98.38.249.169)
09:54:51 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
09:57:44 acidjnk joins (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de)
09:58:47 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
09:59:17 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
10:04:06 × slycelote quits (~slycelote@user/slycelote) (Read error: Connection reset by peer)
10:04:18 slycelote joins (~slycelote@user/slycelote)
10:05:07 _xor joins (~xor@74.215.232.67)
10:08:35 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
10:13:30 fef joins (~thedawn@user/thedawn)
10:14:55 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
10:19:06 × chomwitt quits (~Pitsikoko@athedsl-32487.home.otenet.gr) (Ping timeout: 258 seconds)
10:20:09 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
10:23:17 <arkanoid> the Error monad link is broken https://wiki.haskell.org/Errormonad.html
10:23:17 zaquest joins (~notzaques@5.128.210.178)
10:23:34 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
10:28:54 DNH joins (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89)
10:29:15 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
10:29:41 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:30:59 × qbt quits (~edun@user/edun) (Ping timeout: 258 seconds)
10:34:12 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
10:34:54 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: No route to host)
10:38:52 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
10:42:55 × Voxelman quits (~Voxelman@185.254.75.32) (Read error: Connection reset by peer)
10:43:37 × mrus quits (~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820) (Ping timeout: 246 seconds)
10:44:16 kuribas joins (~user@ptr-25vy0i9ash1yu2tubi9.18120a2.ip6.access.telenet.be)
10:45:22 <kuribas> How does haskell compare to other functional languages? Looking a bit at SML and OCaml, it seems that haskell has far more libraries, and is more practical for real world projects (other than compilers etc).
10:46:31 <kuribas> Of course scala and clojure are also popular, but I don't consider clojure a real functional language, it's more a lisp derivative. And Scala is mostly multiparadigm, and also complex and overengineerd.
10:47:48 <arahael> kuribas: I use haskell for most of my private hobby/side projects. It's awesule, but I've used F# and Swift, which are somewhat OCaml-inspired.
10:48:25 <arahael> kuribas: The biggest most profound difference with Haskell is that it's *lazy*, and has a really really good type system, but in practice that it's lazy makes a big difference to how you use haskell.
10:48:52 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 246 seconds)
10:48:54 <kuribas> arahael: how much libraries are there for F#? Or does it just use the C# ecosystem?
10:49:05 <arahael> F# is just another .NET language, really, yeah.
10:49:17 <arahael> As is C#. :)
10:49:20 <kuribas> doesn't that mean that most libraries aren't really made for FP?
10:49:27 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
10:50:00 <arahael> Kinda. The way F# copes with nulls is interesting. (It assumes there aren't any).
10:50:41 <kuribas> then how do you test if a function returns null?
10:51:33 <arahael> kuribas: That's a trap, yeah. In earlier versions, you'd check for it explicitly, and the compiler lets you. But then, the compiler *elides* that check because it thinks better.
10:51:44 <arahael> Hopefully they've changed that now.
10:53:33 <arahael> Looks like they've changed it - suggesting instead to use pattern matching. Far better: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/values/null-values
10:53:59 <arahael> But anyway, one difference is that Haskell is lazy, so your functions must not have side effects.
10:54:30 <arahael> And since that practice is so strictly encouraged (otherwise you risk loosing your sanity), that has a flow-on effect to all of haskell's libraries, too.
10:55:34 <DigitalKiwi> haskell is non-strict
10:55:52 <DigitalKiwi> https://wiki.haskell.org/Lazy_vs._non-strict
10:56:01 <arahael> Yeah - more accurate - thanks for that.
10:56:34 <DigitalKiwi> speaking only for myself haskell programmers are lazy ;)
10:58:05 <arahael> Hmm. :)
11:01:36 <DigitalKiwi> and obsesssed with bottoms
11:02:01 DigitalKiwi drops mic
11:03:21 <Rembane> I like lazy bottoms and I cannot lie.
11:03:45 anandprabhu joins (~anandprab@94.202.243.198)
11:04:04 wei2912 joins (~wei2912@112.199.250.21)
11:05:00 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds)
11:05:07 arahael suddenly realises why bottom is drawn like _|_
11:05:20 × enemeth79 quits (sid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity)
11:05:45 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
11:06:04 <DigitalKiwi> dibblego twitter avatar lolol
11:08:21 <kuribas> arahael: so haskell is the only language that doesn't let you get away coding imperative OO in it?
11:09:07 <kuribas> Although imperative style is still quite possible in haskell. OO on the other hand is pretty hard.
11:09:35 <dibblego> DigitalKiwi: that's BUMFISH
11:09:42 × Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 258 seconds)
11:10:01 <DigitalKiwi> is that a new operator
11:10:17 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: No route to host)
11:11:41 <dibblego> no, it's a pre-landing checklist
11:13:08 <arahael> Heh.
11:13:36 <arahael> kuribas: If it's subtyping you're referring to, no, I don't think haskell has that.
11:13:58 <arahael> kuribas: It does have classes and instances, though, but they behave quite differently.
11:14:06 <kuribas> And that's a good thing...
11:14:25 arahael thinks so.
11:14:37 <DigitalKiwi> https://www.parsonsmatt.org/2017/02/17/object_oriented_programming_in_haskell.html
11:14:57 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
11:16:39 ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
11:16:43 <DigitalKiwi> https://hackage.haskell.org/package/hoop
11:16:56 <DigitalKiwi> cue bot "haskell can do that!"
11:22:23 <dibblego> DigitalKiwi: https://flightscope.gitlab.io/aircraft/checklist/eurofox.pdf page 1, top-right
11:23:55 Pickchea joins (~private@user/pickchea)
11:25:30 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 255 seconds)
11:26:22 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
11:26:44 enemeth79 joins (uid309041@id-309041.tooting.irccloud.com)
11:27:32 hegstal joins (~hegstal@2a02:c7f:7604:8a00:3e00:8986:ae6e:2aac)
11:38:49 × Ouroborosie quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Remote host closed the connection)
11:41:00 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
11:41:55 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
11:43:35 × anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving)
11:43:39 × MidAutumnMoon9 quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
11:43:54 MidAutumnMoon9 joins (~MidAutumn@user/midautumnmoon)
11:46:19 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 268 seconds)
11:46:53 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
11:49:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:51:36 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
11:51:43 × hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0)
11:55:21 jippiedoe joins (~david@2a02-a44c-e14e-1-d983-46dc-7f08-a171.fixed6.kpn.net)
11:58:55 <kuribas> I've been accused of being a haskell lanuage zealot. But actually I am interested in other languages (logic, FP, dependently typed, etc...). It just doesn't seem to be useful to push for other languages that I know less...
11:59:13 Ouroborosie joins (~pjetcetal@128-71-13-182.broadband.corbina.ru)
11:59:21 <kuribas> I could recommend F# instead of haskell, but I don't know it that well, so there is less benefit IMO...
12:00:07 favonia joins (~favonia@user/favonia)
12:01:40 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
12:02:29 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
12:03:15 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
12:03:49 gentauro joins (~gentauro@user/gentauro)
12:04:48 <kuribas> Every time I come with rational arguments, I get a reply like "But I don't like types, they get in the way". Or "programming languages don't matter, business logic does". Or "I don't care it's more robust, we want to move fast and solve bugs as we go".
12:11:30 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
12:11:41 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
12:11:50 × _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2)
12:14:02 favonia joins (~favonia@user/favonia)
12:15:10 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
12:15:54 _xor joins (~xor@74.215.232.67)
12:16:02 mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
12:18:06 <dibblego> get used to it
12:18:47 <tom__> kuribas: I feel your pain
12:18:53 Guest77 joins (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
12:19:43 <tom__> "Types get in the way" then spends three hours NULL chasing
12:20:50 <kuribas> tom__: exactly! I spend far more time thinking about types in clojure than in haskell.
12:21:11 <maerwald> types can get in the way, especially since haskell lacks structural typing
12:21:34 <tom__> haha sometimes you want types to get in the way
12:21:51 <maerwald> I know of at least one Haskell dev who now works full-time with typescript and doesn't regret it
12:22:09 <maerwald> I probably wouldn't, but it's a valid position
12:22:50 peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
12:22:55 <tom__> Clojure to me is just javascript with some immutability
12:22:58 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
12:23:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
12:23:22 <kuribas> maerwald: I find that often, it just amounts to having a bit more boilerplate. Or having duplicate type definitions.
12:23:40 <maerwald> it can be a *lot* of boilerplate
12:24:00 <maerwald> and prohibits you of expressing certain relationships between data
12:24:19 <tom__> Haskell, Rust and Julia - desert island stack
12:24:37 <tom__> Havent tried the latter two :D
12:24:58 <maerwald> class based solutions don't work well when you need an *actual* data type for serialisation
12:25:38 brian_da_mage joins (~Neuromanc@user/briandamag)
12:25:45 <maerwald> typescript is surprisingly simple and powerful on these matters... certainly less elegant and unsound in a few places, but that's the tradeoff the make
12:25:47 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 268 seconds)
12:26:10 <kuribas> tom__: rust is only my "to learn list" :)
12:26:42 <kuribas> maerwald: you can be less elegant and unsound in haskell too...
12:27:02 <maerwald> kuribas: yeah, but that usually involves MORE complexity, not less
12:27:10 <maerwald> so the opposite of typescript
12:27:16 × thelounge9230681 quits (~thelounge@cpe-75-85-161-60.san.res.rr.com) (Remote host closed the connection)
12:27:22 <tom__> You can be and then people who don't understand what a theoretical model is say that it must mean Haskell is pointless
12:28:12 <kuribas> maerwald: I don't agree
12:28:47 <maerwald> well, you *can* do some forms of structural typing/subtyping, but it all ends in esoteric libraries
12:29:00 <kuribas> maerwald: so don't do it.
12:29:03 <maerwald> while you get all that in TS for free without complexity
12:29:45 <maerwald> well, I'm not commenting on which language is better, I'm just commenting on "types can get in the way", because they can
12:29:55 <kuribas> maerwald: plenty of ways to get around that: 1) partially applied functions (the Endo trick), create a new type with some of the fields. 3) just make the fields all Maybe.
12:30:56 <kuribas> maerwald: there is a difference between "the types sometimes get in the way", and "the types always get in the way", the latter is what they seem to be implying.
12:31:02 <maerwald> 1) difficult for serialisation, Show instances, debugging, ... 2) boilerplate, 3) unexpressive, because now you have two cases of `Maybe`
12:31:40 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
12:32:02 <kuribas> You don't need two cases of Maybe
12:32:44 <kuribas> and 4) just put default values.
12:33:32 <maerwald> 1. there's no such value, because the computation doesn't return one for the given input, 2. there's no such value, because the computation can *never* return one
12:33:45 <maerwald> now you also have to wonder: 3. there's a value, but there shouldn't be one
12:33:47 <maerwald> oops
12:33:47 <kuribas> IMO, the more you want correctness, the more you are restricted in what you write. It has nothing to do with types (directly).
12:34:28 <kuribas> maerwald: if you grab to clojure, you don't care anyway...
12:34:48 <maerwald> default values.. what's my default account balance? :p
12:34:54 <dibblego> like I said, get used to it
12:35:03 × awth13 quits (~user@user/awth13) (Remote host closed the connection)
12:35:20 <tom__> ^ yes and get used to makeNegative = (*) -1
12:35:49 <kuribas> Which is my point, haskell can be a nice unsafe language to. Just make a big sum type, and partial functions over it (don't forget to add error messages though...).
12:36:17 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
12:36:21 <maerwald> well, with structural typing you don't need to be partial
12:36:24 <int-e> Or unsafeCoerce everything and program untyped lambda calculus? :)
12:36:36 × acidjnk quits (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
12:36:48 <arahael> kuribas: Mind you, Clojure seems to offer alternative methods to allow you to type ocrrect code. In particular, Clojure seems to have a fantastic runtime repl.
12:37:15 <arahael> kuribas: Such that you're running the live program and debugging it and replacing functions on the fly.
12:37:26 <int-e> I like types, they prevent some of the more embarrassing programming errors from being run as code.
12:37:44 <tom__> Revenge is forcing them to write a web app in the Lean proof assistant fully verified.
12:37:49 <tom__> It has IO.
12:38:13 × krz3si quits (~quassel@185.217.117.220) (Ping timeout: 265 seconds)
12:38:25 <maerwald> right... clojure: forget a closing bracket, code still compiles, but doesn't compute prime numbers... instead it compiles to a chess engine
12:38:42 <tom__> haha
12:38:45 <maerwald> type safe? Yeah maybe. But.
12:38:48 <kuribas> arahael: I think you never actually used clojure?
12:38:57 × zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
12:39:03 <int-e> tom__: That's deep in "overdoing it" territory. At least if the specification is anything more elaborate than "something in, something out", and even that may be tricky if you interpret it as a promise to fulfil request in finite time.
12:39:18 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
12:39:26 <kuribas> arahael: it's a very mediocre runtime IMO, compared to java. Error messages are nearly incomprehensible. Tracing is nice though...
12:39:39 <tom__> int-e: Yeah pointless torture :)
12:39:50 <maerwald> the only upside of clojure is interactive development
12:39:55 aman joins (~aman@user/aman)
12:40:08 <tom__> The haskell compiler feels pretty interactive
12:40:29 <maerwald> if HLS works, maybe
12:40:37 <arahael> kuribas: Seemed to be effective enough.
12:40:53 <arahael> But no, I haven't personally used it.
12:41:00 <maerwald> but on the other hand: usually not. Compile times are too slow
12:41:12 <kuribas> arahael: clojurists just have a different idea of "correct code".
12:41:15 <arahael> I personally quite like ghcid.
12:41:27 <arahael> kuribas: Indeed, but I think it's the process of discovery that they like.
12:41:57 <arahael> kuribas: In haskell, we seem to prefer to test functions in isolation. Clojure people seem to prefer to test functions in the live system.
12:42:00 <maerwald> if you're working on 300+ modules and your Type module has a whitespace change, you're gonna need to restart cabal a few times, because your machine OOMed due to TH
12:42:18 <tom__> Which library is recommended for sampling probability distributions?
12:42:42 <arahael> maerwald: The amount of memory Haskell uses is crazy high. Sadly, I find it way faster than Swift. :/
12:44:32 machinedgod joins (~machinedg@24.105.81.50)
12:45:45 <kuribas> arahael: lispers will boast about how easy it is to hot patch live systems. They don't tell you that it becomes very hard to see who changed what and when.
12:46:03 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
12:46:05 <kuribas> arahael: so you'll end up with CI/CD anyway.
12:46:32 favonia joins (~favonia@user/favonia)
12:46:34 <kuribas> However a theoretically, a "live" programming environment with integrated version control could be nice.
12:46:44 <kuribas> I don't know if that ever has been done.
12:47:32 <maerwald> https://hackage.haskell.org/package/optics-th-0.4/docs/Optics-TH.html#v:makeClassy
12:47:34 <maerwald> https://hackage.haskell.org/package/optics-th-0.4/docs/Optics-TH.html#v:makeFieldsNoPrefix
12:47:36 <maerwald> https://hackage.haskell.org/package/generic-optics-2.2.0.0/docs/Data-Generics-Product-Fields.html#t:HasField
12:47:38 <maerwald> which one of those to pick?
12:48:20 lavaman joins (~lavaman@98.38.249.169)
12:49:00 <maerwald> HasField is kinda cool with those neat type errors
12:49:55 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:51:41 × Pickchea quits (~private@user/pickchea) (Ping timeout: 268 seconds)
12:52:55 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
12:53:54 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds)
12:55:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
12:55:32 fef joins (~thedawn@user/thedawn)
12:57:13 pesada joins (~agua@2804:18:48:588b:1:0:277e:35b0)
12:57:27 favonia joins (~favonia@user/favonia)
12:59:33 × jippiedoe quits (~david@2a02-a44c-e14e-1-d983-46dc-7f08-a171.fixed6.kpn.net) (Ping timeout: 255 seconds)
12:59:34 × azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Read error: Connection reset by peer)
13:01:06 × agua quits (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 240 seconds)
13:04:25 azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
13:06:50 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:08:00 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:08:26 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
13:11:29 chomwitt joins (~Pitsikoko@athedsl-32487.home.otenet.gr)
13:16:58 × hegstal quits (~hegstal@2a02:c7f:7604:8a00:3e00:8986:ae6e:2aac) (Remote host closed the connection)
13:21:34 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 258 seconds)
13:22:43 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
13:24:15 justLearning96 joins (~justLearn@bb42-60-215-35.singnet.com.sg)
13:27:14 justLearning96 parts (~justLearn@bb42-60-215-35.singnet.com.sg) ()
13:29:20 Maxdamantus joins (~Maxdamant@user/maxdamantus)
13:31:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
13:32:07 agua joins (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100)
13:33:28 favonia joins (~favonia@user/favonia)
13:34:12 × pesada quits (~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 255 seconds)
13:39:28 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
13:40:39 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
13:41:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:43:28 Guest15 joins (~Guest15@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
13:43:50 × xff0x quits (~xff0x@2001:1a81:5219:9d00:3d14:ef54:1c92:a192) (Ping timeout: 255 seconds)
13:44:20 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
13:44:30 xff0x joins (~xff0x@port-92-193-131-10.dynamic.as20676.net)
13:45:18 × Guest15 quits (~Guest15@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Client Quit)
13:54:00 × mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Ping timeout: 255 seconds)
14:02:29 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
14:02:49 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
14:04:05 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
14:06:40 favonia joins (~favonia@user/favonia)
14:06:43 mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
14:08:18 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
14:09:10 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
14:19:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
14:21:25 favonia joins (~favonia@user/favonia)
14:35:11 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
14:40:32 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
14:40:56 favonia joins (~favonia@user/favonia)
14:44:11 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
14:44:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
14:44:38 × Guest77 quits (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Ping timeout (120 seconds))
14:45:50 Guest77 joins (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
14:51:13 zebrag joins (~chris@user/zebrag)
14:55:15 slowButPresent joins (~slowButPr@user/slowbutpresent)
14:56:14 × Guest77 quits (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Client closed)
14:56:32 Guest77 joins (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
14:57:27 fef is now known as admin
14:57:36 admin is now known as adminll
14:57:48 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:02:55 × meinside_ quits (uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
15:04:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:08:14 smichel17 joins (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
15:08:50 gehmehgeh joins (~user@user/gehmehgeh)
15:09:01 texasmynsted joins (~texasmyns@99.96.221.112)
15:10:23 × gehmehgeh quits (~user@user/gehmehgeh) (Client Quit)
15:12:29 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
15:12:54 fradet joins (~fradet@216.252.75.247)
15:13:31 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 268 seconds)
15:14:01 Zemyla_ joins (~ec2-user@ec2-54-196-11-2.compute-1.amazonaws.com)
15:14:08 × Aleksejs_Home quits (~Aleksejs@haskell.lv) (Ping timeout: 268 seconds)
15:14:08 × ajb quits (~ajb@cupid.whatbox.ca) (Ping timeout: 268 seconds)
15:14:45 × Zemyla quits (~ec2-user@ec2-54-196-11-2.compute-1.amazonaws.com) (Ping timeout: 268 seconds)
15:14:57 oso joins (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f)
15:15:01 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
15:15:22 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 268 seconds)
15:15:35 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
15:15:35 <boxscape> maerwald: the TH versions say "This method of optics generation should only be used when migrating an existing codebase from the lens library to optics"
15:15:40 ajb joins (~ajb@cupid.whatbox.ca)
15:15:51 <boxscape> maerwald: this, my final answer is C
15:15:56 <boxscape> s/this/thus
15:16:00 × nonzen quits (~nonzen@user/nonzen) (Ping timeout: 268 seconds)
15:16:00 × aweinstock quits (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (Ping timeout: 268 seconds)
15:16:00 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 244 seconds)
15:16:08 <maerwald> HasField?
15:16:20 Aleksejs joins (~Aleksejs@haskell.lv)
15:16:21 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds)
15:16:34 nonzen joins (~nonzen@user/nonzen)
15:16:46 <boxscape> yeah.. though I thought there was a version of that which uses OverloadedLabels
15:17:20 <maerwald> HasField though doesn't allow arbitrary subtyping... it's a simple getter
15:17:23 aweinstock joins (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
15:17:32 × adminll quits (~thedawn@user/thedawn) (Remote host closed the connection)
15:17:36 hololeap joins (~hololeap@user/hololeap)
15:17:54 <maerwald> with makeClassy style classes you could descend deeper into the structure with the same getter
15:18:03 Guest9 joins (~Guest9@43.242.116.127)
15:18:12 superbil joins (~superbil@1-34-176-171.HINET-IP.hinet.net)
15:18:12 adminll joins (~thedawn@user/thedawn)
15:18:30 <boxscape> maerwald: oh actually the TH version links to https://hackage.haskell.org/package/optics-core-0.4/docs/Optics-Label.html as preferred solution
15:19:03 <boxscape> that's the OverloadedLabels version I was remembering
15:19:04 × ByronJohnson quits (~bairyn@mail.digitalkingdom.org) (Ping timeout: 268 seconds)
15:19:12 ByronJohnson joins (~bairyn@mail.digitalkingdom.org)
15:19:41 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
15:21:31 Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
15:22:44 <maerwald> so there you could also define custom LabelOptic instances that descend into a structure?
15:23:27 <boxscape> that seems plausible but I haven't tried doing it
15:23:47 <maerwald> I'm leaning towards makeClassy, but I'm not sure
15:24:25 <boxscape> I like makeClassy, the main reason I would avoid it personally is that the documentation advises against it
15:25:40 <maerwald> so what does LabelOptic give over HasField?
15:25:43 Ariakenom_ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
15:26:17 <texasmynsted> What is the modern answer to haskell records? Lens?
15:26:49 <maerwald> only difference I see is labelOptic is `Optic` and HasField is a `Lens`
15:28:24 <boxscape> hm I'm not sure what the concrete differences are
15:29:14 elf_fortrez joins (~elf_fortr@adsl-72-50-6-20.prtc.net)
15:29:33 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 268 seconds)
15:29:35 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
15:30:52 <boxscape> texasmynsted: there are a few answers to this: In the next version, OverloadedRecordDot is being introduces, which allows one to write something like `personA.company.name`. (Updates are a bit iffy but will improve over time.) In the meantime, lens is definitely still widely used, though optics is a replacement which aims to have better error messages. There is also some research going into row types, but that's further out.
15:30:55 <boxscape> s/next version/next version of GHC
15:31:36 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
15:32:08 <boxscape> (though regarding row types, the vinyl records package allows something similar today)
15:33:11 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
15:35:02 Ariakenom__ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
15:35:20 × enemeth79 quits (uid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity)
15:35:21 gehmehgeh joins (~user@user/gehmehgeh)
15:35:30 × elf_fortrez quits (~elf_fortr@adsl-72-50-6-20.prtc.net) (Quit: Client closed)
15:36:09 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
15:38:40 × oso quits (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) (Ping timeout: 246 seconds)
15:38:48 × Ariakenom_ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 268 seconds)
15:39:45 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
15:40:03 favonia joins (~favonia@user/favonia)
15:43:24 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
15:43:44 × kuribas quits (~user@ptr-25vy0i9ash1yu2tubi9.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
15:44:31 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
15:45:43 × keutoi quits (~keutoi@157.48.202.216) (Quit: Reconnecting)
15:45:53 keutoi joins (~keutoi@157.48.202.216)
15:46:54 chris_ joins (~chris@81.96.113.213)
15:47:16 × Guest77 quits (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Client closed)
15:53:52 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
15:55:47 × hendursa1 quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
15:56:16 hendursa1 joins (~weechat@user/hendursaga)
15:56:22 arjun joins (~user@user/arjun)
15:59:48 Guest14 joins (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
16:03:05 <Guest14> Hello :)
16:03:40 <Guest14> I am new to Haskell and am working through the Real World Haskell Book
16:03:57 econo joins (uid147250@user/econo)
16:04:27 <Guest14> I have a basic question if anyone would care to listen
16:06:02 <allbery_b> best to just ask it rather than asking to ask
16:06:11 allbery_b is now known as geekosaur
16:06:23 <davean> asking to ask is why I wasn't helping
16:07:44 <Guest14> splitWith _ [] = []
16:07:45 <Guest14> splitWith a xs = [pre ++ [x]] ++ next
16:07:45 <Guest14> where
16:07:46 <Guest14> (pre, x:suf) = span a xs
16:07:46 <Guest14> next = splitWith a suf
16:08:10 <Guest14> I have this program and I run into a problem with x:suf when span a xs is [] becuase there is no head
16:09:30 × chomwitt quits (~Pitsikoko@athedsl-32487.home.otenet.gr) (Ping timeout: 240 seconds)
16:09:34 <int-e> > let f = splitAt 1 in (f "abc", f "")
16:09:36 <lambdabot> (("a","bc"),("",""))
16:11:31 <int-e> (So maybe use splitAt instead of the x:suf pattern.)
16:11:39 <maerwald> was there a question yet?
16:11:45 <davean> No
16:12:09 <Guest14> Ok I will give that a try thanks
16:12:10 <int-e> They described a problem, close enough.
16:12:35 <maerwald> They also described the answer
16:12:38 <maerwald> "there is no head"
16:12:47 <int-e> @where paste
16:12:47 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
16:13:04 <int-e> maerwald: That's the reason, but not a solution for the problem?
16:13:06 int-e shrugs
16:13:10 <maerwald> So my answer is: yes
16:13:28 <int-e> Well, so sorry for trying to be helpful.
16:13:33 × dajoer quits (~david@user/gvx) (Quit: leaving)
16:14:08 × Ariakenom__ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds)
16:14:09 <davean> int-e: oh do be helpful
16:15:04 mnrmnaugh parts (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Leaving)
16:15:14 <Guest14> int-e that worked thank you
16:16:19 darius-os_ joins (uid508861@id-508861.stonehaven.irccloud.com)
16:20:42 <texasmynsted> thank you boxscape
16:21:29 <texasmynsted> Sounds like optics or vinyl for now
16:21:44 × Guest14 quits (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed)
16:22:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
16:23:04 Ariakenom__ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
16:24:27 Guest14 joins (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
16:27:27 × brian_da_mage quits (~Neuromanc@user/briandamag) (Ping timeout: 255 seconds)
16:27:58 oso joins (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f)
16:30:57 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:31:11 <sm> g'day all. Speaking of optics.. you experienced [lens] coders, do you find it good or bad for (a) fields and (b) lenses to be visually disctinct from other kinds of bindings (functions, "variables") ? As in eg _field/lens_, field_/lens__, _field/lensL, .... ?
16:31:57 × Ariakenom__ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds)
16:32:24 <sm> I feel it would be good overall, for avoiding collisions and for human comprehension . But I don't have a lot of lens experience
16:33:02 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:33:18 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 255 seconds)
16:33:20 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:34:12 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
16:36:33 Ariakenom__ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
16:36:59 retroid_ joins (~retro@97e2ba5d.skybroadband.com)
16:38:11 × smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
16:40:10 <maerwald> can you derive LabelOptic with deriving via for an inner type?
16:41:05 × retro_ quits (~retro@97e2ba5d.skybroadband.com) (Ping timeout: 268 seconds)
16:41:42 × retroid_ quits (~retro@97e2ba5d.skybroadband.com) (Ping timeout: 268 seconds)
16:42:24 retroid_ joins (~retro@97e2ba5d.skybroadband.com)
16:42:50 <oso> xpost from #haskell-beginners:
16:42:52 <oso> I'm passing around a type synonym for Int, but in reality the only constraint it needs to follow is that it's hashable. what constructor do i use for this? my brain says go from `type UID = Int` to `data UID a = Hashable a` but that's very not correct, and google isn't helping much
16:43:21 <oso> nvm sorry got an answer there
16:48:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:49:57 lavaman joins (~lavaman@98.38.249.169)
16:50:11 × Guest14 quits (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed)
16:51:02 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
16:51:26 favonia joins (~favonia@user/favonia)
16:52:47 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
16:53:50 machinedgod joins (~machinedg@24.105.81.50)
16:54:37 <glguy> oso, if you just need to know that something is hashable you'd use it like: stuff :: Hashable a => a -> b -> c
16:54:39 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
16:54:39 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
16:55:19 <glguy> If a parameter is the uid parameter you can document that like: stuff :: Hashable uid => uid {- ^ the UID -} -> etc
16:55:35 <oso> I was trying to do that while also using types to keep my signatures from becoming unwieldy, but first i'll just worry about getting the code working
16:55:43 × keutoi quits (~keutoi@157.48.202.216) (Quit: leaving)
16:55:53 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
16:55:58 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
16:56:05 cheater joins (~Username@user/cheater)
16:56:22 <glguy> the documentation for parameters goes in the haddock comments rather than type synonyms
16:56:43 <oso> mmk
16:57:00 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
16:57:52 burnside_ joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
16:57:55 smichel17 joins (~smichel17@2601:193:8300:4b9::600)
16:58:06 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer)
17:00:31 × arjun quits (~user@user/arjun) (Ping timeout: 250 seconds)
17:01:33 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: Connection reset by peer)
17:02:18 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
17:05:40 <dsal> oso: It's tempting to put constraints in the type definitions, but if you take a look at, for example, `Data.Map.Strict` you'll see the type definition is just `data Map k a`. You'd think k would always have to be ordered, but that's not the case. You can create and work on maps that have unorderable keys when you don't do things that require ordering. e.g.:
17:05:42 <dsal> > M.elems $ (* 2) <$> M.singleton id 3
17:05:43 <lambdabot> [6]
17:07:10 <dsal> The idea is that you only have to constrain things where they actually need to be constrained. The Functor instance, e.g., doesn't care about the keys at all, so why should it require they're ordered?
17:08:00 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
17:09:25 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
17:11:52 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
17:12:32 dyeplexer joins (~dyeplexer@user/dyeplexer)
17:13:45 <oso> got it working \o/
17:13:47 <oso> thank you
17:15:07 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:16:22 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
17:21:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:22:00 mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
17:26:35 × Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
17:27:45 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
17:28:36 Sgeo joins (~Sgeo@user/sgeo)
17:41:25 Pickchea joins (~private@user/pickchea)
17:42:19 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
17:43:14 × mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds)
17:44:09 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 258 seconds)
17:44:25 mcfrdy joins (~mcfrdy@45.67.96.126)
17:44:26 × mcfrdy quits (~mcfrdy@45.67.96.126) (Changing host)
17:44:26 mcfrdy joins (~mcfrdy@user/mcfrdy)
17:46:09 <hololeap> so, I figured out a way to make a function with an arbitrary number of arguments using type families and type-level lists. but, I have to wonder ... has someone already made this and put it on hackage?
17:47:04 lavaman joins (~lavaman@98.38.249.169)
17:47:46 <texasmynsted> wait, why do you want a function with an arbitrary number of arguments?
17:48:31 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
17:49:03 <c_wraith> usually to cover for a lack of other expressiveness
17:49:09 <c_wraith> printf is a common example
17:49:12 <texasmynsted> Seems to me ideally a function should have exactly one argument
17:49:19 <c_wraith> We can't write the type it actually has in Haskell
17:49:25 <c_wraith> Because it's a dependent type
17:49:51 <c_wraith> So varargs lets us do it anyway and fail at runtime if the programmer got it wrong
17:50:07 <texasmynsted> printf solves a problem in a particular way that I think could be solved better, differently
17:50:18 <c_wraith> differently? sure. Better? Not really.
17:50:21 <hololeap> the motivation was because I had a typeclass with a function, and I encountered some outliers that needed extra arguments passed to that function
17:50:47 <texasmynsted> c_wraith: I am not convinced
17:50:48 <hololeap> I'd have to write up a blog post or something to get into all the details
17:50:57 <Rembane> hololeap: Do it! :D
17:51:08 <texasmynsted> yes, that would be a good read
17:51:15 <c_wraith> printf is *really* good at doing exactly what it's intended for. Compactly specifying output formatted for monospace devices.
17:51:33 <texasmynsted> like regular expressions?
17:51:42 <c_wraith> honestly, it's more useful
17:52:01 <c_wraith> regular expressions have to involve things like capturing group to really be useful, and those complicate APIs tremendously
17:52:05 <c_wraith> printf has no such problems
17:52:20 <texasmynsted> Right. I think regular expressions work great but are terrible and the problem is better solved differently
17:52:46 <EvanR> compare and contrast serious uses of printf with the expanded version, replicate that across a code base like 50 times and compare xD
17:53:12 <EvanR> also, printf for debugging
17:53:25 <EvanR> debugging would be harsher without it
17:53:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:54:27 <EvanR> I'm more interested with this case of some function sometimes needing more arguments
17:56:04 <texasmynsted> I am still going with functions should have exactly one argument
17:56:30 <hololeap> I mean... they do, technically.
17:57:24 Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
17:57:38 <texasmynsted> yes
17:58:02 <EvanR> if the difference is between argument type (A,B) and (A,B,C) it's about argument type and not number
17:58:23 <texasmynsted> Okay now we are getting somewhere
18:00:32 MorrowM joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
18:00:36 × azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Ping timeout: 265 seconds)
18:00:57 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 245 seconds)
18:01:47 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
18:03:07 azeem joins (~azeem@176.201.25.252)
18:05:26 × flukiluke_ quits (~flukiluke@168.138.23.5) (Ping timeout: 265 seconds)
18:05:49 flukiluke joins (~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962)
18:06:15 × elcaro quits (~anonymous@45.32.191.75) (Ping timeout: 252 seconds)
18:07:09 elcaro joins (~anonymous@45.32.191.75)
18:09:18 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 265 seconds)
18:09:54 pesada joins (~agua@2804:18:48:588b:1:0:277e:35b0)
18:10:09 Core5124 joins (~agua@2804:14c:8793:8e2f:642c:be4c:c775:de87)
18:13:10 __monty__ joins (~toonn@user/toonn)
18:13:23 × agua quits (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 255 seconds)
18:14:11 × pesada quits (~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 250 seconds)
18:15:26 × azeem quits (~azeem@176.201.25.252) (Ping timeout: 268 seconds)
18:17:33 azeem joins (~azeem@176.201.25.252)
18:19:56 × Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
18:19:57 × ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
18:21:23 × Ouroborosie quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
18:24:10 Ananta-shesha joins (~pjetcetal@128-71-13-182.broadband.corbina.ru)
18:24:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:24:49 × azeem quits (~azeem@176.201.25.252) (Read error: Connection reset by peer)
18:26:00 azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
18:26:27 brian_da_mage joins (~Neuromanc@user/briandamag)
18:30:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
18:30:56 Ananta-shesha is now known as Anantashesha
18:31:05 Anantashesha is now known as Ananta-shesha
18:36:54 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
18:37:06 lavaman joins (~lavaman@98.38.249.169)
18:37:39 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection)
18:42:10 lbseale joins (~lbseale@user/ep1ctetus)
18:42:16 × DNH quits (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:45:49 × Ananta-shesha quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
18:46:05 DNH joins (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89)
18:46:05 × burnside_ quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer)
18:46:10 Ananta-shesha joins (~pjetcetal@128-71-13-182.broadband.corbina.ru)
18:46:23 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
18:49:30 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 240 seconds)
18:50:08 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
18:50:11 × DNH quits (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Client Quit)
18:51:17 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
18:53:36 hendursaga joins (~weechat@user/hendursaga)
18:54:09 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
18:56:50 × hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection)
18:58:27 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
18:59:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:00:54 × benin0369 quits (~benin@183.82.206.198) (Ping timeout: 255 seconds)
19:03:41 aallen joins (~aallen@072-182-074-253.res.spectrum.com)
19:05:55 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
19:06:50 <texasmynsted> sigh.
19:07:01 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
19:07:39 <oso> seconded
19:08:52 <texasmynsted> +1 oso
19:09:01 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
19:12:41 brian_da_mage is now known as Brianmancer
19:14:22 hendursaga joins (~weechat@user/hendursaga)
19:14:36 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
19:17:38 Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
19:17:38 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
19:18:12 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
19:20:01 × adminll quits (~thedawn@user/thedawn) (Remote host closed the connection)
19:20:24 × machinedgod quits (~machinedg@24.105.81.50) (Remote host closed the connection)
19:21:19 machinedgod joins (~machinedg@24.105.81.50)
19:22:40 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
19:25:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:30:09 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
19:30:34 favonia joins (~favonia@user/favonia)
19:31:03 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
19:32:57 <monochrom> Why so grim?
19:33:18 <boxscape> hololeap: one of rae's latest videos is also about varargs https://youtu.be/iGSKqcebhfs
19:33:22 <monochrom> You know "grim" and "grin" are just one curvy stroke apart. :)
19:33:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
19:33:55 <boxscape> you can't spell slaughter without laughter, you can't spell grim without grin
19:34:33 <monochrom> hee hee
19:35:42 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
19:35:57 <oso> idk why texas is feeling grim but i'm extremely anxious about a work trip and trying to stuff the feelings down by adding documentation to my heretofore undocumented code
19:36:32 <monochrom> My gripe about printf is I will be writing "%d %d %d %d %d %d %d" and then it's the same issue with (Int,Int,Int,Int,Int,Int). And I'm deliberately demonstrating an miscounting error for starters. But this issue is not about vararg, it's about losing structure.
19:37:45 × alx741 quits (~alx741@181.196.68.89) (Ping timeout: 265 seconds)
19:38:53 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
19:39:32 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
19:40:57 × mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds)
19:41:40 × Ananta-shesha quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
19:43:37 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
19:43:45 × dmwit quits (~dmwit@pool-96-255-233-247.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
19:44:57 mcfrdy joins (~mcfrdy@45.67.96.77)
19:44:57 × mcfrdy quits (~mcfrdy@45.67.96.77) (Changing host)
19:44:57 mcfrdy joins (~mcfrdy@user/mcfrdy)
19:46:21 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
19:47:45 favonia joins (~favonia@user/favonia)
19:48:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:50:23 alx741 joins (~alx741@186.178.109.120)
19:51:08 <maerwald> can you implement varargs in haskell without ambiguitiy due to partial application?
19:51:18 <maerwald> (and I'm not talking about the typeclass trick)
19:51:27 dmwit joins (~dmwit@pool-108-18-198-142.washdc.fios.verizon.net)
19:51:55 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
19:52:19 <geekosaur> I think there's a typesafe varargs via TH somewhere on hackage
19:52:48 <geekosaur> probably relies on the format string being literal, but you have other problems if it's not anyway
19:53:46 <c_wraith> In the general case, there's true ambiguity. There's no general way to distinguish between providing all the arguments that will be provided and partially applying the function.
19:54:25 <geekosaur> ^
19:55:06 finsternis joins (~X@23.226.237.192)
19:55:20 <c_wraith> this is why I described varargs as a workaround, not something worth having for itself :)
19:56:14 Franciman joins (~francesco@openglass.it)
19:56:21 <Franciman> Hi, does cabal support literate haskell?
19:56:26 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
19:56:38 <c_wraith> if you put an .lhs extension on the files, it should find and compile them
19:56:56 <Franciman> I have a project using .lhs files, but I get errors
19:56:58 <Franciman> wait
19:57:19 <Franciman> `unlit' failed in phase `Literate pre-processor'. (Exit code: 1)
19:57:31 <c_wraith> so it's trying!
19:57:36 <Franciman> it is a module I specified in the other-modules
19:57:45 <Franciman> so I wrote ListCursor
19:57:49 <Franciman> instead of ListCursor.lhs
19:58:08 <Franciman> I am really temped to ignore cabal and automatically go with ghc
19:58:11 <Franciman> let me see what I can do
19:58:29 DNH joins (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89)
19:58:35 <geekosaur> so it ran unlit, so it correctly found it was literate haskell. yoou could try running unlit manually and see what it choked on
19:58:40 <c_wraith> that error doesn't look like you left out an extension
19:58:50 <c_wraith> that error looks like it was incorrect literate haskell
19:59:28 <Franciman> uhm
20:00:10 <Franciman> geekosaur: how do I call unlit?
20:00:16 <Franciman> I don't have an unlit program
20:00:32 <geekosaur> it's in the library directory
20:01:09 <Franciman> c_wraith: here is my code: https://bpa.st/A7JA
20:01:11 <geekosaur> ghc --print-libdir
20:01:29 <geekosaur> then unlit < yoursourcefile
20:01:48 <geekosaur> with the fukll path to the unlit binary in the libdir
20:02:36 <Franciman> geekosaur: sorry to bother again
20:02:38 <Franciman> but I get
20:02:43 <Franciman> usage: unlit [-q] [-n] [-c] [-#] [-P] [-h label] file1 file2
20:02:47 <Franciman> and there is no help :D
20:02:59 <Franciman> oh I am stupid
20:03:01 <Franciman> sorry
20:03:03 <c_wraith> I don't know if you can mix bird tracks and tex-style literate haskell in one file
20:03:10 <Franciman> no ok, same problem
20:03:31 <Franciman> c_wraith: uhm let me see
20:04:24 <geekosaur> I don't think you can
20:04:31 <Franciman> and in fact!
20:04:35 <Franciman> thank you all
20:04:48 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 255 seconds)
20:05:10 <Franciman> only sad thing is that I can't use the # for markdown titles
20:05:25 × peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
20:05:27 <geekosaur> unlit could use more documentation but I think it's largely fallen out of use
20:05:36 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 258 seconds)
20:05:38 <Franciman> nobody likes literate haskell?
20:05:53 <oso> you could use the === underline in place of the # for header
20:05:56 <Franciman> I mean, I understand, it does not even sync with haddock
20:06:01 <c_wraith> in very broad terms, nobody likes literate programming
20:06:08 <Franciman> yup, thanks oso
20:06:43 juhp joins (~juhp@128.106.188.66)
20:06:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:07:52 × phma quits (phma@2001:5b0:211b:8138:4237:c684:b0bd:87ec) (Read error: Connection reset by peer)
20:08:19 <maerwald> Franciman: no, it's not even bidirectional
20:08:37 <maerwald> there's a project that fixes that
20:08:43 <maerwald> but even then, not sure
20:09:09 <maerwald> https://blog.esciencecenter.nl/entangled-1744448f4b9f
20:09:25 <maerwald> https://github.com/entangled/entangled
20:09:30 <Franciman> entangled is cool, I use it at my job
20:09:36 <Franciman> it has some sore points
20:09:39 <Franciman> and a lit of bugs
20:09:50 <Franciman> lot* lol
20:09:52 <maerwald> that's why it's LITerate
20:09:54 <maerwald> lol
20:09:57 <Franciman> LOL
20:10:07 <Franciman> but it does not integrate well with ghc etc
20:10:09 phma joins (phma@2001:5b0:211f:63f8:7d7f:3315:17e4:ee3e)
20:11:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
20:13:34 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
20:16:13 <dsal> Franciman: the last time I wrote literate Haskell, it was in markdown. It's not bad.
20:18:02 <Franciman> it is cool yeah
20:18:02 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
20:18:25 <Franciman> only thing is, as it seems, it does not mix well with haddock
20:18:32 <Franciman> you still have to add haddock special comments
20:20:33 × Guest9 quits (~Guest9@43.242.116.127) (Quit: Connection closed)
20:21:13 <dsal> Yeah, haddock is lacking in a few ways. I also want TH to work with it.
20:22:54 <dmj`> an alternative haddock could be nice, could call it koi pond
20:24:15 <geekosaur> there was at some point a discussion on cafe about incompatibilities between haddock markup and markdown that would make supporting both difficult
20:29:00 × azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Read error: Connection reset by peer)
20:29:09 azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
20:32:46 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
20:34:34 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
20:35:56 <monochrom> It is sad that we now have to add "bi-directional" to refer to actual literate programming.
20:36:31 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:36:33 <monochrom> Candidly, lhs is merely a nicer syntax for vanilla comments.
20:38:15 <monochrom> Literate programming needed to be invented as a thing distinct from mere comments because the biggest part is to present your code in an order the computer doesn't expect. If a system can't do this, it is not literate programming.
20:39:48 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
20:40:48 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
20:40:59 vicfred joins (~vicfred@user/vicfred)
20:41:12 favonia joins (~favonia@user/favonia)
20:44:40 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
20:45:40 Erutuon joins (~Erutuon@user/erutuon)
20:49:13 niemand joins (~niemand@p5796acb3.dip0.t-ipconnect.de)
20:50:39 × niemand quits (~niemand@p5796acb3.dip0.t-ipconnect.de) (Client Quit)
20:51:00 acidjnk joins (~acidjnk@p200300d0c72b9505d437a5269bf657ec.dip0.t-ipconnect.de)
20:51:41 × Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
20:52:14 <dmj`> It would be really nice if Haskell abided by industry standards instead of custom stuff, like use toml, markdown, LLVM instead of cabal files, haddock syntax, Cmm
20:53:39 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
20:53:57 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
20:54:04 ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
20:55:29 <geekosaur> llvm's not gonna happen unless you want to try to upstream a bunch of stuff so ghc can inform llvm of cps-ed stuff
20:56:01 <geekosaur> and then arrange for ghc to be able to do so, but nobody's going to do that until there's somewhere for it to go
20:57:04 <Rembane> Sounds like a moment 22
20:57:45 <geekosaur> no, they know what needs to change and how, but it would require a bunch of llvm changes that are more or less ghc-specific
20:57:54 <geekosaur> so they're unlikely to ever happen
20:58:33 <Rembane> Got it! Then I misread, thank you for the clarification.
20:58:48 <noctux> dmj`: industry standards? do you mean XML, more XML and visual-C? :P
20:59:16 <dmj`> noctux: yes, XML over SOAP.
20:59:30 <maerwald> dmj`: afair someone was actually working on providing a toml interface to cabal?
20:59:39 Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
20:59:41 <maerwald> or maybe I just imagined that
21:00:33 <dmj`> geekosaur: what are your thoughts on GRIN as a backend for GHC
21:00:36 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
21:01:29 burnsidesLlama joins (~burnsides@client-8-82.eduroam.oxuni.org.uk)
21:02:35 Maxdamantus joins (~Maxdamant@user/maxdamantus)
21:04:12 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
21:04:36 favonia joins (~favonia@user/favonia)
21:05:18 <geekosaur> looks to me like it really wants to be a whole-program compiler? which ghc kinda doesn't
21:05:33 × burnsidesLlama quits (~burnsides@client-8-82.eduroam.oxuni.org.uk) (Remote host closed the connection)
21:05:42 <geekosaur> (and yet kinda does since it "fakes it" via exporting cidode in .hi files)
21:05:55 <geekosaur> *code
21:07:27 <geekosaur> still, makes me wonder how well grin would work if used thye way ghc would use it instead of whole-program
21:07:40 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
21:09:43 <geekosaur> would really need to write out IR files instead of object files and let the backend take it from there, but I'm not sure how well ghc would work with that setup given it doesn't e.g. do that with llvm IR
21:11:06 <geekosaur> and you couldn't mix grin backend objects with non-grin backend, like you currently can with llvm vs. asm
21:11:25 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
21:13:22 <geekosaur> I think ghc would have to treat grin not as a backend but as a "way" (e.g. static vs. dynamic, or profiled vs. non-profiled)
21:13:37 <monochrom> cabal was invented long before "industry standard" existed.
21:14:02 <monochrom> Apart from XML.
21:14:22 <Rembane> I wonder why industry didn't go with cabal's format.
21:15:23 <monochrom> And JVM bytecode.
21:15:50 <geekosaur> because it's only friendly to haskell, since haskell is friendly to parsers?
21:16:18 <dmj`> ghc-grin forks ghc it seems, exports *all* of the STG somewhere, does the analysis, brings it back and continues on in the pipeline, to great effect. Suppose we went the nuclear option and replaced STG with GRIN. GRIN would inline the eval function (which is currently hardcoded in the RTS), then perform the WPO, then emit LLVM.
21:16:19 <geekosaur> and the syntax is at least reminiscent of haskell
21:16:34 <dmj`> We could even compile the RTS to GRIN and include it in the optimization phases, which would have the effect of dead code eliminating parts of the RTS that were unused, like GC for example.
21:16:50 × hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection)
21:16:52 <geekosaur> interesting
21:17:15 hendursaga joins (~weechat@user/hendursaga)
21:19:03 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
21:19:03 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
21:19:33 favonia joins (~favonia@user/favonia)
21:20:33 <dmj`> benefits from WPO are so large even naive pointer analysis (steensgaard) is an enormous win, would still need a fast interpreter though
21:21:12 <dmj`> thomas johnson created STG, then his final work was GRIN, but it never saw prominence in GHC, I wonder why that is
21:23:53 <geekosaur> probably because ghc's architecture makes intervening at the stg layer more difficult than it should be
21:24:36 chomwitt joins (~Pitsikoko@athedsl-32487.home.otenet.gr)
21:27:20 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
21:30:54 <dmj`> exactly, too much code at that point
21:31:20 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 265 seconds)
21:33:00 Erutuon joins (~Erutuon@user/erutuon)
21:33:38 favonia joins (~favonia@user/favonia)
21:34:54 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:35:03 <dmj`> realizing that GRIN's eval inlining is the first step in undoing the overhead of lazy evaluation (while preserving semantics) was pretty mind-blowing
21:36:32 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:37:03 × mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds)
21:37:24 mcfrdy joins (~mcfrdy@45.67.96.175)
21:37:24 × mcfrdy quits (~mcfrdy@45.67.96.175) (Changing host)
21:37:24 mcfrdy joins (~mcfrdy@user/mcfrdy)
21:38:52 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:39:26 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Quit: -)
21:39:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
21:40:32 × mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving)
21:40:34 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds)
21:41:19 chexum joins (~chexum@gateway/tor-sasl/chexum)
21:42:11 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
21:43:11 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:44:22 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:46:07 × vysn quits (~vysn@user/vysn) (Remote host closed the connection)
21:46:42 favonia joins (~favonia@user/favonia)
21:48:43 × silverwhitefish quits (~hidden@47.202.102.10) (Ping timeout: 258 seconds)
21:52:16 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
21:54:04 × Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
21:54:40 Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
21:55:30 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
21:59:07 × Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Ping timeout: 246 seconds)
21:59:57 euandreh joins (~euandreh@2804:14c:33:9fe5:9d95:c71:11e4:3e0f)
22:06:06 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
22:06:20 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
22:07:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:09:09 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
22:10:32 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Ping timeout: 255 seconds)
22:13:11 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:14:07 Atum_ joins (~IRC@user/atum/x-2392232)
22:17:10 × ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
22:19:46 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
22:19:49 hexfive joins (~eric@50.35.83.177)
22:20:53 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:32:28 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
22:35:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
22:35:24 favonia joins (~favonia@user/favonia)
22:35:43 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
22:36:37 lavaman joins (~lavaman@98.38.249.169)
22:41:46 × isekaijin quits (~pyon@user/pyon) (Ping timeout: 252 seconds)
22:41:54 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 265 seconds)
22:42:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
22:47:13 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
22:51:15 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:52:40 × oxide quits (~lambda@user/oxide) (Ping timeout: 246 seconds)
22:56:53 × jespada quits (~jespada@90.254.247.46) (Ping timeout: 265 seconds)
22:57:12 machinedgod joins (~machinedg@24.105.81.50)
22:59:23 jespada joins (~jespada@90.254.247.46)
23:01:38 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
23:01:47 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
23:02:17 × spruit11 quits (~quassel@2a02:a467:ccd6:1:4852:6669:da0c:37fe) (Ping timeout: 255 seconds)
23:02:36 <danso> is there a typeclass that generalizes fromMaybe and fromRight?
23:02:53 <danso> it seems closely related to Alternative, like <|>
23:03:29 <danso> but (<|>) :: f a -> f a -> f a
23:03:31 <hpc> :t traverse
23:03:32 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
23:03:36 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:03:41 <danso> i'm looking for f a -> f a -> a
23:03:45 × fendor quits (~fendor@77.119.192.173.wireless.dyn.drei.com) (Remote host closed the connection)
23:04:44 <geekosaur> danso, what should such a typeclass do if it would fail?
23:04:44 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
23:04:55 <hpc> maybe you want Foldable? https://hackage.haskell.org/package/base-4.15.0.0/docs/Prelude.html#t:Foldable
23:05:10 <danso> oh you're right geekosaur
23:05:18 <danso> i made a mistake; i want f a -> a -> a
23:05:36 <hpc> % sum (Just 5)
23:05:36 <yahb> hpc: 5
23:05:40 <hpc> % sum Nothing
23:05:41 <yahb> hpc: 0
23:05:52 <hpc> % :t sum
23:05:52 <yahb> hpc: (Foldable t, Num a) => t a -> a
23:06:27 <danso> something like foldr (const id) is close maybe
23:06:34 geekosaur joins (~geekosaur@xmonad/geekosaur)
23:07:03 <hpc> :t foldMap
23:07:04 <lambdabot> (Foldable t, Monoid m) => (a -> m) -> t a -> m
23:07:11 × jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
23:07:54 <danso> wow, TIL Maybe is Foldable
23:09:37 <hpc> speaking of, TIL Complex is Foldable
23:09:59 <hpc> % sum (5 :+ 10)
23:09:59 <yahb> hpc: 15
23:10:15 <hpc> and it... just combines the numbers
23:10:19 <hpc> i don't know what i was expecting
23:14:30 <geekosaur> o.O
23:16:59 × _xor quits (~xor@74.215.232.67) (Quit: brb)
23:18:50 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
23:21:57 <xsperry> that's.. interesting
23:22:18 Maxdamantus joins (~Maxdamant@user/maxdamantus)
23:22:32 × acidjnk quits (~acidjnk@p200300d0c72b9505d437a5269bf657ec.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
23:22:59 silverwhitefish joins (~hidden@47.202.102.10)
23:23:49 × aallen quits (~aallen@072-182-074-253.res.spectrum.com) (Ping timeout: 246 seconds)
23:27:26 alphabeta joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
23:29:41 Guest18 joins (~Guest18@2603-8080-6d0d-35bb-0000-0000-0000-0004.res6.spectrum.com)
23:30:33 × kilolympus quits (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 276 seconds)
23:32:24 × mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 268 seconds)
23:34:25 spruit11 joins (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b)
23:35:07 <monochrom> That's the natural answer to someone who expects length (x,y) = 2. Use length (x :+ y) instead. >:)
23:36:48 <geekosaur> > length (1,2) -- "natural"
23:36:49 <lambdabot> 1
23:37:05 mcfrdy joins (~mcfrdy@45.67.96.175)
23:37:05 × mcfrdy quits (~mcfrdy@45.67.96.175) (Changing host)
23:37:05 mcfrdy joins (~mcfrdy@user/mcfrdy)
23:37:13 geekosaur originally typoed "notural"
23:37:28 × Ariakenom__ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer)
23:39:11 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
23:39:13 × euandreh quits (~euandreh@2804:14c:33:9fe5:9d95:c71:11e4:3e0f) (Quit: WeeChat 3.2)
23:39:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:39:17 <monochrom> And haha someone was ahead of me, Complex is a Monad too.
23:39:19 × ph88 quits (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Remote host closed the connection)
23:39:27 × spruit11 quits (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) (Ping timeout: 255 seconds)
23:39:42 ph88 joins (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c)
23:39:43 dajoer joins (~david@user/gvx)
23:40:38 favonia joins (~favonia@user/favonia)
23:44:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
23:44:42 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
23:46:58 × DNH quits (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Quit: Textual IRC Client: www.textualapp.com)
23:51:39 spruit11 joins (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b)
23:54:45 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 255 seconds)
23:56:13 <boxscape> % :i Complex
23:56:13 <yahb> boxscape: type Complex :: * -> *; data Complex a = !a :+ !a; -- Defined in `Data.Complex'; instance Applicative Complex -- Defined in `Data.Complex'; instance Eq a => Eq (Complex a) -- Defined in `Data.Complex'; instance Functor Complex -- Defined in `Data.Complex'; instance Monad Complex -- Defined in `Data.Complex'; instance RealFloat a => Floating (Complex a) -- Defined in `Data.Complex'; instance RealFloat a
23:56:22 × spruit11 quits (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) (Ping timeout: 246 seconds)
23:56:51 <boxscape> so Complex is really just `Pair`, with all the behavior you would expect (and then some, for the number stuff)
23:56:55 Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
23:57:31 <geekosaur> so if you ever need that value with a type that's both Num and Monad…
23:58:19 <boxscape> % (1 :+ 2) >>= (\x -> x :+ x)
23:58:19 <yahb> boxscape: 1 :+ 2
23:59:22 <monochrom> :)

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