Home liberachat/#haskell: Logs Calendar

Logs on 2022-10-24 (liberachat/#haskell)

00:00:03 <jle`> np! yup it's the power of stream combinators, and it should only take O(1) space in most circumstances bc you're never allocating the actual zipped list
00:00:16 <Guest62> interesting
00:00:48 <Guest62> it must be better than my pattern matching recursion
00:01:13 <jle`> readability-wise, probably. but in the end it basically simplifies down to pattern matching recursion in the source code
00:01:24 <jle`> if we're talking performance- or space-wise
00:03:32 <Guest62> ok
00:03:43 <Guest62> tyvm
00:04:00 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 250 seconds)
00:07:14 LukeHoersten joins (~LukeHoers@user/lukehoersten)
00:13:29 × beteigeuze quits (~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) (Ping timeout: 276 seconds)
00:13:46 × birdgoose quits (~birdgoose@151.210.175.160) (Quit: Iridium IRC Client)
00:13:47 Kaipei joins (~Kaiepi@108.175.84.104)
00:13:56 birdgoose joins (~birdgoose@151.210.175.160)
00:14:19 × Guest62 quits (~Guest62@43.21.135.77.rev.sfr.net) (Quit: Client closed)
00:15:21 × Kaipei quits (~Kaiepi@108.175.84.104) (Remote host closed the connection)
00:15:45 Kaipei joins (~Kaiepi@108.175.84.104)
00:17:02 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
00:22:19 × bilegeek quits (~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6) (Remote host closed the connection)
00:22:39 bilegeek joins (~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6)
00:24:44 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
00:25:41 LukeHoersten joins (~LukeHoers@user/lukehoersten)
00:28:45 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
00:29:08 × birdgoose quits (~birdgoose@151.210.175.160) (Ping timeout: 250 seconds)
00:31:53 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:31:53 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:31:53 wroathe joins (~wroathe@user/wroathe)
00:33:22 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
00:36:51 × paulpaul1076 quits (~paulpaul1@95-29-5-52.broadband.corbina.ru) (Remote host closed the connection)
00:36:53 × axeman quits (~quassel@2a02:8109:a380:78:75a8:c262:9acb:200a) (Ping timeout: 276 seconds)
00:37:09 LukeHoersten joins (~LukeHoers@user/lukehoersten)
00:41:05 redmp joins (~redmp@mobile-166-137-178-099.mycingular.net)
00:58:59 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Read error: Connection timed out)
01:02:24 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
01:05:47 × redmp quits (~redmp@mobile-166-137-178-099.mycingular.net) (Ping timeout: 272 seconds)
01:07:08 redmp joins (~redmp@mobile-166-137-178-099.mycingular.net)
01:08:22 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:10:25 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:46 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
01:14:11 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:15:31 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3df4:aa3e:43b0:5de8)
01:16:11 rockystone joins (~rocky@user/rockymarine)
01:16:32 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:21:12 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
01:28:50 × xff0x quits (~xff0x@2405:6580:b080:900:5aef:465a:6bf7:395b) (Ping timeout: 272 seconds)
01:29:32 × Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 276 seconds)
01:30:45 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
01:36:31 birdgoose joins (~birdgoose@151.210.175.160)
01:37:17 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
01:37:28 BananaKing69441 joins (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net)
01:37:52 BananaKing69441 is now known as j4cc3b
01:38:13 LukeHoersten joins (~LukeHoers@user/lukehoersten)
01:42:38 × jbayardo quits (~jbayardo@20.83.116.49) (Remote host closed the connection)
01:43:26 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
01:43:57 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
01:48:25 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
01:54:49 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
01:57:07 × ski quits (~ski@remote11.chalmers.se) (Remote host closed the connection)
01:58:10 <j4cc3b> can you create a data type that has a subset of integers? For example, something like this - data Id = 100 | ... | 999
01:58:57 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
01:59:14 Feuermagier joins (~Feuermagi@user/feuermagier)
02:02:46 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
02:03:21 LukeHoersten joins (~LukeHoers@user/lukehoersten)
02:03:21 <dsal> j4cc3b: You can create a data type with a constructor that isn't exported and only allow whatever you want.
02:04:06 <dsal> But there's also this:
02:04:10 <dsal> @hoogle Data.Finite
02:04:10 <lambdabot> Database.PostgreSQL.Simple.Time Finite :: a -> Unbounded a
02:04:10 <lambdabot> Data.Universe.Class class Universe a => Finite a
02:04:10 <lambdabot> Data.Monoid.Inf Finite :: a -> Inf p a
02:04:22 <dsal> @hackage finite-typelits
02:04:22 <lambdabot> https://hackage.haskell.org/package/finite-typelits
02:04:22 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
02:04:40 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
02:05:12 <j4cc3b> Thank you so much
02:06:01 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
02:07:14 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
02:08:11 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
02:10:57 jargon joins (~jargon@184.101.208.112)
02:13:00 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:13:34 × td_ quits (~td@83.135.9.27) (Ping timeout: 250 seconds)
02:14:03 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
02:14:44 × birdgoose quits (~birdgoose@151.210.175.160) (Quit: Iridium IRC Client)
02:14:57 birdgoose joins (~birdgoose@151.210.175.160)
02:15:33 td_ joins (~td@83.135.9.20)
02:18:27 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
02:22:08 finsternis joins (~X@23.226.237.192)
02:23:10 bilegeek_ joins (~bilegeek@43.sub-174-209-36.myvzw.com)
02:25:26 × redmp quits (~redmp@mobile-166-137-178-099.mycingular.net) (Ping timeout: 276 seconds)
02:25:47 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:25:47 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:25:47 finn_elija is now known as FinnElija
02:25:48 × birdgoose quits (~birdgoose@151.210.175.160) (Remote host closed the connection)
02:25:51 × bilegeek quits (~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6) (Ping timeout: 272 seconds)
02:27:47 zaquest joins (~notzaques@5.130.79.72)
02:28:37 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
02:29:39 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Read error: Connection timed out)
02:32:43 × Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed)
02:38:16 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 250 seconds)
02:40:32 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
02:47:10 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
02:49:23 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
02:50:44 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
02:51:42 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
02:54:26 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
02:55:11 Feuermagier joins (~Feuermagi@user/feuermagier)
02:55:52 × Feuermagier quits (~Feuermagi@user/feuermagier) (Max SendQ exceeded)
02:56:33 × BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection)
02:56:44 Feuermagier joins (~Feuermagi@user/feuermagier)
03:00:52 × j4cc3b quits (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds)
03:01:14 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 250 seconds)
03:02:22 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
03:04:52 king_gs joins (~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0)
03:05:09 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
03:08:13 takuan joins (~takuan@178-116-218-225.access.telenet.be)
03:08:33 LukeHoersten joins (~LukeHoers@user/lukehoersten)
03:09:49 × bilegeek_ quits (~bilegeek@43.sub-174-209-36.myvzw.com) (Remote host closed the connection)
03:10:10 bilegeek_ joins (~bilegeek@43.sub-174-209-36.myvzw.com)
03:13:22 × boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection)
03:17:35 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
03:18:09 boxscape_ joins (~boxscape_@81.191.27.107)
03:19:00 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 250 seconds)
03:28:37 nate2 joins (~nate@98.45.169.16)
03:32:52 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 250 seconds)
03:33:59 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds)
03:37:02 × boxscape_ quits (~boxscape_@81.191.27.107) (Ping timeout: 244 seconds)
03:38:04 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
03:42:13 Guest51 joins (~Guest51@50.47.90.28)
03:43:36 × danza quits (~francesco@151.43.239.176) (Read error: Connection reset by peer)
03:43:58 rockystone joins (~rocky@user/rockymarine)
03:45:08 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
03:49:56 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds)
03:59:03 redmp joins (~redmp@mobile-166-137-178-116.mycingular.net)
03:59:30 danza joins (~francesco@ca-18-216-127.service.infuturo.it)
04:00:32 nate2 joins (~nate@98.45.169.16)
04:04:35 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
04:05:56 rockystone joins (~rocky@user/rockymarine)
04:06:02 <Unicorn_Princess> hoogle generate "Found 7569 warnings when processing items", and also gave me a list of packages that are missing documentation. are these errors caused by something on my system, or is it simply a report on the packages themselves?
04:06:17 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
04:06:55 <Unicorn_Princess> (i installed hoogle by first installing ghcup, then `cabal install hoogle`, and finally `hoogle generate`)
04:07:29 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds)
04:08:27 biberu joins (~biberu@user/biberu)
04:08:41 <Unicorn_Princess> it reports in total 30 packages missing docs. stuff like 'lzma-clib' and 'rocksdb-haskell'
04:09:49 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
04:09:50 <Unicorn_Princess> ah, https://hackage.haskell.org/package/lzma-clib says "docs not available", so maybe it's the pacakges
04:10:52 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
04:11:26 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 250 seconds)
04:11:32 <Unicorn_Princess> ah, but https://hackage.haskell.org/package/minisat-solver has "docs uploaded by user", so who knows. but it's another abandoned package it seems
04:12:02 <Unicorn_Princess> (minisat-solver being another of the packages that hoogle generate reports are missing docs)
04:12:46 <jackdk> When you installed your packages locally, they were probably built without documentation. I don't remember how to coerce cabal to rebuild installed packages with documentation.
04:13:12 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
04:17:56 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
04:17:58 <Unicorn_Princess> oh i never installed any of them really. installing ghcup, `cabal install hoogle` and `hoogle generate` are the only haskell-related commands i ran on this system. just installed ubuntu 22.04 from scratch, so it's quite fresh
04:18:18 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
04:18:27 <jackdk> Those packages are probably the dependencies of hoogle
04:19:53 rockystone joins (~rocky@user/rockymarine)
04:20:36 × king_gs quits (~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0) (Quit: king_gs)
04:20:54 nate2 joins (~nate@98.45.169.16)
04:23:40 Kaipei joins (~Kaiepi@108.175.84.104)
04:24:46 LukeHoersten joins (~LukeHoers@user/lukehoersten)
04:25:12 × Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed)
04:27:44 × bilegeek_ quits (~bilegeek@43.sub-174-209-36.myvzw.com) (Quit: Leaving)
04:29:05 × BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 272 seconds)
04:29:51 Guest7606 joins (~aaa@49.207.231.197)
04:31:37 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
04:32:00 <Unicorn_Princess> hmmm, thanks
04:34:50 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
04:35:05 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
04:43:11 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
04:43:46 Lumia joins (~Lumia@user/Lumia)
04:51:53 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds)
04:57:54 rockystone joins (~rocky@user/rockymarine)
04:59:37 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
05:06:16 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
05:13:41 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
05:13:58 birdgoose joins (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe)
05:26:06 chomwitt joins (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1)
05:38:59 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: BRB)
05:40:43 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
05:45:28 × BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds)
05:50:07 michalz joins (~michalz@185.246.207.193)
05:50:45 × Neuromancer quits (~Neuromanc@user/neuromancer) (Quit: Going offline, see ya! (www.adiirc.com))
05:53:37 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
05:54:01 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
05:55:19 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
05:58:39 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
05:59:48 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
06:03:11 × BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 276 seconds)
06:04:40 rockystone joins (~rocky@user/rockymarine)
06:06:14 nate2 joins (~nate@98.45.169.16)
06:10:52 × chomwitt quits (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
06:11:16 chomwitt joins (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1)
06:11:38 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
06:12:07 × Lumia quits (~Lumia@user/Lumia) (Quit: ,-)
06:19:28 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
06:20:33 × redmp quits (~redmp@mobile-166-137-178-116.mycingular.net) (Ping timeout: 272 seconds)
06:20:47 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:21:37 rembo10 joins (~rembo10@main.remulis.com)
06:26:40 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.6)
06:29:11 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds)
06:33:17 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
06:37:10 mmhat joins (~mmh@p200300f1c7307610ee086bfffe095315.dip0.t-ipconnect.de)
06:38:33 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
06:41:51 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
06:46:05 mncheck joins (~mncheck@193.224.205.254)
06:47:39 acidjnk joins (~acidjnk@p200300d6e7137a39185a556c4ffa1a9f.dip0.t-ipconnect.de)
06:47:51 <Clinton[m]> just checking is there an extension that allows me to have record field names of the same name but different types in the same module?
06:48:24 <Clinton[m]> like... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/018c991b074f6aa3afe4ec1ab06076fa435256e8>)
06:48:46 <Clinton[m]> Or is that just very naughty.
06:52:32 lortabac joins (~lortabac@2a01:e0a:541:b8f0:ad98:9d00:b84f:455)
06:53:04 × birdgoose quits (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Read error: Connection reset by peer)
06:53:19 birdgoose joins (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe)
06:54:53 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
06:55:47 <c_wraith> DuplicateRecordFields should do that
07:06:25 <Clinton[m]> c_wraith: yep, that did the job. Although I've got another issue more like this:... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/b2de1ff05816fa066d62b0d6181a0a0c9b7e17cc>)
07:06:57 <c_wraith> Oh. I don't think that's gonna work.
07:12:55 random-jellyfish joins (~random-je@user/random-jellyfish)
07:19:01 Lycurgus joins (~juan@user/Lycurgus)
07:19:56 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
07:19:57 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
07:24:19 titibandit joins (~titibandi@xdsl-87-78-36-34.nc.de)
07:30:56 <dminuoso> How would one write a rewrite rule for say `pure a`
07:31:12 <dminuoso> Specifically, I cant figure out how to specify a type annmotation for it.
07:31:15 <Clinton[m]> c_wraith: all good I've just put them subtypes now
07:31:39 <dminuoso> `"foo" forall a. pure a = XXX` is not good enough, I want to constrain it to a particualr type of `a`
07:31:47 <dminuoso> Or rather, that example is not good enough
07:31:57 <dminuoso> Say rewriting `a >> b`
07:33:48 <dminuoso> https://play-haskell.tomsmeding.com/saved/3Nts9F5o
07:37:32 <dminuoso> Or do I have to define a top level binding, say choice, define <+> = choice, specify INLINE[0] on the instance, and specify the rewrite rule in terms of `choice`?
07:38:07 <nshepperd2> jle`: hey! you're right, that solution is O(l^2) space. I do have a O(l) version though, that does it as a fold
07:38:25 <dminuoso> Mmm, no. Inlining on (<+>) prevents the rule from firing.
07:40:27 <dminuoso> This also causes weird type errors: "flatparse/reassoc-alt" forall l m r. (l :: Maybe a) <+> m <+> r = Nothing :: Maybe a
07:40:41 <dminuoso> Or dropping that final `:: Maybe a` too.
07:42:38 <nshepperd2> jle`: https://paste.zlkj.in/uploads/e4d73710d9d7e786/fourteen.txt
07:42:47 × danza quits (~francesco@ca-18-216-127.service.infuturo.it) (Read error: Connection reset by peer)
07:44:32 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:45:10 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
07:49:43 LukeHoersten joins (~LukeHoers@user/lukehoersten)
07:50:52 rockystone joins (~rocky@user/rockymarine)
07:51:25 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3df4:aa3e:43b0:5de8) (Remote host closed the connection)
07:51:44 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:54:37 kuribas joins (~user@ptr-17d51emnxyldefiap63.18120a2.ip6.access.telenet.be)
07:56:42 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
07:57:12 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 250 seconds)
07:59:14 danza joins (~francesco@151.34.187.38)
08:05:20 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:09:46 jakalx parts (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
08:09:47 jakalx joins (~jakalx@base.jakalx.net)
08:13:14 rockystone joins (~rocky@user/rockymarine)
08:15:50 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 250 seconds)
08:17:55 × titibandit quits (~titibandi@xdsl-87-78-36-34.nc.de) (Remote host closed the connection)
08:24:54 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:25:04 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
08:25:18 fserucas_eod joins (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:25:25 × fserucas_eod quits (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
08:25:40 fserucas_eod joins (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:25:51 × fserucas_eod quits (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
08:26:06 fserucas|eod joins (~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:29:37 × birdgoose quits (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Quit: Konversation terminated!)
08:29:49 birdgoose joins (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe)
08:30:15 akegalj joins (~akegalj@93-138-77-86.adsl.net.t-com.hr)
08:32:28 nschoe joins (~q@141.101.51.197)
08:34:42 gmg joins (~user@user/gehmehgeh)
08:37:19 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:37:32 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
08:41:28 shapr joins (~user@net-5-88-239-29.cust.vodafonedsl.it)
08:46:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
08:51:28 rockystone joins (~rocky@user/rockymarine)
08:51:42 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
08:51:53 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:8908:183b:c2f1:b2ec)
08:56:05 Guest65 joins (~Guest65@206.119.125.191)
08:56:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:8908:183b:c2f1:b2ec) (Ping timeout: 250 seconds)
08:57:19 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
09:00:01 <dminuoso> RULES are officially magical.
09:00:06 × polykernel[m] quits (~polykerne@user/polykernel) (Quit: You have been kicked for being idle)
09:09:09 <lyxia> dminuoso: How about "forall (a :: Int)" ?
09:10:02 <lyxia> or using TypeApplications
09:10:14 <dminuoso> Well so Ive came up with: https://play-haskell.tomsmeding.com/saved/KqLymSwL
09:10:28 <dminuoso> Which I think is the right specification, but it may be that the diagnostic is just a false positive
09:11:02 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds)
09:11:10 arahael joins (~arahael@14-202-55-135.tpgi.com.au)
09:11:12 <dminuoso> I guess the mere type annotation does not cause GHC to look for whether a NOINLINE exists at the specific instance for (<+>), that would be selected after type unification
09:13:12 × Guest65 quits (~Guest65@206.119.125.191) (Quit: Client closed)
09:14:04 <dminuoso> I cant also make heads or tails of this: https://play-haskell.tomsmeding.com/saved/vsW3F1R8
09:14:18 <dminuoso> Im beginning to suspect the diagnostic is a very sketchy heuristic
09:14:35 ubert1 joins (~Thunderbi@91.141.49.34.wireless.dyn.drei.com)
09:15:21 × ubert quits (~Thunderbi@178.115.71.141.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
09:15:21 ubert1 is now known as ubert
09:17:56 <dminuoso> What I really want is something like:
09:19:42 <dminuoso> {-# RULES "flatparse/reassoc-alt" [1] forall a. forall l m r. l (<|> @Maybe) m (<|> @Maybe) r = Nothing #-}
09:21:34 rockystone joins (~rocky@user/rockymarine)
09:26:34 zer0bitz joins (~zer0bitz@2001:2003:f748:2000:d960:d98a:f624:8ef)
09:26:45 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds)
09:30:04 Guest51 joins (~Guest51@50.47.90.28)
09:33:06 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
09:36:15 __monty__ joins (~toonn@user/toonn)
09:37:24 × ft quits (~ft@p3e9bc845.dip0.t-ipconnect.de) (Quit: leaving)
09:39:29 × Guest7606 quits (~aaa@49.207.231.197) (Quit: Leaving)
09:39:38 × acidjnk quits (~acidjnk@p200300d6e7137a39185a556c4ffa1a9f.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
09:40:08 rockystone joins (~rocky@user/rockymarine)
09:47:59 <lyxia> What's confusing about the diagnostic? if choice gets inlined first, the rule won't apply since there is no choice to match.
09:51:19 <dminuoso> Ah, I must specify INLINE[~0] on the instance method
09:51:27 <dminuoso> That makes sense, lyxia.
09:52:24 × Guest16 quits (~Guest16@p200300ef971835b5517f7031904fbb79.dip0.t-ipconnect.de) (Quit: Client closed)
09:54:38 acidjnk joins (~acidjnk@p200300d6e7137a390804478ada777c16.dip0.t-ipconnect.de)
09:55:17 <dminuoso> Or ~1 rather I suppose
09:56:52 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
10:05:21 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
10:07:30 nate2 joins (~nate@98.45.169.16)
10:10:20 rockystone joins (~rocky@user/rockymarine)
10:12:47 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
10:15:05 <dminuoso> lyxia: Ah but hold on, the rewrite rule starts from phase 1, but choice cant get inlined until phase 2.
10:19:20 <dminuoso> I mean yeah, I can set the `choice` inline phase to 2, and the rewrite rule to ~1
10:19:55 <dminuoso> But whats slightly absurd, is that not specifying a phase for the rule makes the diagnostic go away too.
10:20:47 <dminuoso> That is, why does the diagnostic fire for one but not the other https://play-haskell.tomsmeding.com/saved/sBjYWK7T
10:20:54 <dminuoso> In either case choice might get inlined first.
10:26:58 axeman joins (~quassel@2a02:8109:a380:78:e069:1455:8f12:523c)
10:30:20 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 276 seconds)
10:31:40 shapr` joins (~user@net-5-88-239-29.cust.vodafonedsl.it)
10:33:12 × shapr quits (~user@net-5-88-239-29.cust.vodafonedsl.it) (Ping timeout: 250 seconds)
10:33:20 shapr` is now known as shapr
10:36:03 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
10:38:24 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Ping timeout: 250 seconds)
10:41:29 × axeman quits (~quassel@2a02:8109:a380:78:e069:1455:8f12:523c) (Quit: No Ping reply in 180 seconds.)
10:42:25 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
10:42:39 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
10:42:45 axeman joins (~quassel@2a02:8109:a380:78:47a:28c0:4f2:c5d2)
10:44:01 biberu joins (~biberu@user/biberu)
10:44:30 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
10:48:13 gmg joins (~user@user/gehmehgeh)
10:49:13 × yaroot quits (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (Remote host closed the connection)
10:50:18 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
10:50:57 yaroot joins (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c)
10:54:48 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
10:55:43 freeside_ joins (~mengwong@103.252.202.193)
10:56:41 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
10:57:02 × birdgoose quits (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Ping timeout: 250 seconds)
10:57:35 × Kaipei quits (~Kaiepi@108.175.84.104) (Remote host closed the connection)
10:57:58 Kaipei joins (~Kaiepi@108.175.84.104)
10:59:21 × shapr quits (~user@net-5-88-239-29.cust.vodafonedsl.it) (Remote host closed the connection)
10:59:29 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Ping timeout: 272 seconds)
11:00:53 × acidjnk quits (~acidjnk@p200300d6e7137a390804478ada777c16.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
11:06:42 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
11:07:59 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
11:12:48 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
11:19:07 <Profpatsch> partitionEithers returns ([left], [right]), and then is usually matched like ([], rights) -> … ; (errs, _) -> errs
11:19:10 xff0x joins (~xff0x@2405:6580:b080:900:274f:8858:84b:2f95)
11:19:36 LukeHoersten joins (~LukeHoers@user/lukehoersten)
11:19:57 <Profpatsch> I usually like to go via Validation instead, traversing the [Either left right] with a (Either left right -> Validation (NonEmpty left) right)
11:20:16 shriekingnoise joins (~shrieking@186.137.167.202)
11:20:18 <Profpatsch> So I get back a `Validation (NonEmpty left) right` and can just match on it
11:21:00 <Profpatsch> But I always wonder how efficient using the Semigroup instance of NonEmpty is in this case, first wrapping every error in a NonEmpty.singleton and then (<>) those
11:22:09 acidjnk joins (~acidjnk@p200300d6e7137a399c67b611784f46e2.dip0.t-ipconnect.de)
11:22:32 <Profpatsch> Intuitively, do I have to worry about performance here?
11:23:24 <Profpatsch> I always have to traverse the list afaik, be it via partitionEithers or Validation, because otherwise I can’t figure out if the list of errors is empty
11:24:22 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
11:27:19 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
11:28:11 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 276 seconds)
11:28:46 jakalx joins (~jakalx@base.jakalx.net)
11:35:35 × axeman quits (~quassel@2a02:8109:a380:78:47a:28c0:4f2:c5d2) (Ping timeout: 272 seconds)
11:39:00 rockystone joins (~rocky@user/rockymarine)
11:40:49 random-jellyfish joins (~random-je@user/random-jellyfish)
11:45:09 × danza quits (~francesco@151.34.187.38) (Read error: Connection reset by peer)
11:49:37 <dminuoso> f the non-empty list of error is empty?
11:51:05 <dminuoso> Profpatsch: I think you meant `Validation [left]` rather than `Validation (NonEmpty left)`, right?
11:51:28 Midjak joins (~Midjak@82.66.147.146)
11:57:01 LukeHoersten joins (~LukeHoers@user/lukehoersten)
11:58:43 <Profpatsch> dminuoso: NonEmpty
11:59:04 danza joins (~francesco@151.43.124.110)
11:59:36 <dminuoso> That NonEmpty will never be empty.
11:59:59 <Profpatsch> because Semigroup e => instance Applicative (Validation e a)
12:00:05 × frost1 quits (~frost@user/frost) (Quit: Client closed)
12:00:07 <dminuoso> Yes, but that NonEmpty will never be empty.
12:00:11 <Profpatsch> dminuoso: exactly
12:00:15 <Profpatsch> that’s the idea
12:00:17 <dminuoso> What exactly?
12:00:21 <dminuoso> Profpatsch | I always have to traverse the list afaik, be it via partitionEithers or Validation, because otherwise I can’t figure out if the list of errors is empty
12:00:36 <dminuoso> Im just telling you, on `Validation (NonEmpty T)` there is no need to figure out iof the list of errors is empty
12:00:44 <Profpatsch> dminuoso: Ah, I was referring to the pattern match after partitionEithers
12:01:02 <Profpatsch> which is ([], vals) -> … ; (errs, _) -> …;
12:01:10 <dminuoso> `(Either left right -> Validation (NonEmpty left) right)` is partial.
12:01:24 <dminuoso> Ah hold on!
12:01:26 <dminuoso> I see what you mean
12:01:40 <Profpatsch> basically it’s “collect all errors \/ success”
12:01:43 <dminuoso> Yeah
12:01:55 <dminuoso> So I wouldnt worry about performance unless this was measurably in a hotspot.
12:02:02 <Profpatsch> but partitionEither’s codomain is “too big”
12:02:10 <Profpatsch> it could in theory also have both errors and successes
12:02:32 <Profpatsch> the only real difference is one gives you a nonEmpty error list
12:02:32 <dminuoso> If constant memory usage and short cut fusion was highly desirable, I would just write a CPS'ed state monad on the spot
12:02:37 <dminuoso> And use it instead of Either
12:02:53 <dminuoso> (with either a difference list, or a reveresed list of errors as state)
12:02:59 <Profpatsch> err, sorry, *neither* errors nor successes
12:03:03 <Profpatsch> so ([], [])
12:03:35 <Profpatsch> dminuoso: yeah, I guess it’s at most constant overhead
12:03:41 constxd joins (~brad@47.55.121.233)
12:04:13 <Profpatsch> cause [a] <> ([b] <> [c]) is relatively efficient
12:04:30 <Profpatsch> as compared to ([a] <> [b]) <> [c]
12:04:39 <dminuoso> THe latter is fine with DList though
12:04:43 <Profpatsch> yep
12:05:01 <dminuoso> Lately Ive become quite comfortable with continuations, so I would just use that instead
12:05:51 <Profpatsch> dminuoso: I mean, there’s a non-empty Seq as well
12:05:59 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 272 seconds)
12:06:33 <Profpatsch> which has O(1) on both ends, so you don’t have to worry whether all your stuff is bracketed the right way
12:06:46 <Profpatsch> tho even more constant overhead
12:07:10 <Profpatsch> I default to non-empty lists right now, might have to benchmark once that becomes an actual problem
12:09:22 <Profpatsch> but in general, non-empty lists are a very good pragmatic datastructure, more Haskell code should use them.
12:09:32 <dminuoso> Profpatsch: https://gist.github.com/dminuoso/3452157cebdbb2397b914e02f3a17cb4
12:09:36 <Profpatsch> removes a bunch of unnecessary branches from most code
12:09:50 <dminuoso> Here, gives you a CPS state monad in which you can just collect errors as you go.
12:10:52 <Profpatsch> dminuoso: hm, Validation is not in Monad cause there is no mempty in NonEmpty
12:11:21 <Profpatsch> the missing mempty for the error list really removes a bunch of non-branches from the state-space
12:11:22 <dminuoso> Profpatsch: Yes, but you are producing [Either a b], which means the error-free case exists.
12:12:01 <dminuoso> This is just a CPSed `State [s]` with a newtype wrapper (such that you cant accidentally modify the state)
12:12:12 <Profpatsch> it’s nice yep
12:12:13 <dminuoso> (Or StateT [s] even)
12:12:29 <Profpatsch> Is there no CPSed State in base?
12:12:34 <Profpatsch> or transformers?
12:12:48 <dminuoso> There is not
12:13:16 <dminuoso> Ill have to do actual analysis whether it actually matters
12:13:35 <Profpatsch> there’s one for WriterT at least https://hackage.haskell.org/package/transformers-0.6.0.4/docs/Control-Monad-Trans-Writer-CPS.html#t:WriterT
12:13:41 <dminuoso> Yeah but thats not really CPSed
12:13:46 Guest1875 joins (~a@49.207.231.197)
12:13:48 <dminuoso> Or not fully anyway
12:13:49 <Profpatsch> which is—incidentally—the only one that does not always leak memory :P
12:13:50 <dminuoso> newtype WriterT w m a = WriterT { unWriterT :: w -> m (a, w) }
12:14:01 <Profpatsch> ah, it’s just StateT
12:14:06 <dminuoso> Yup
12:14:35 × freeside_ quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
12:14:42 <dminuoso> I mean in most cases either is fine
12:14:55 <Profpatsch> dminuoso: do you always pro-actively apply INLINE(ABLE) pragmas to things?
12:15:02 <dminuoso> Its just that with the CPS variant you can easily just introduce an error case
12:15:15 <dminuoso> Profpatsch: Only for things I *expect* to be inlined, such that I dont have to rely on the mood of the simplifier.
12:15:17 <Profpatsch> I’ve been not keen on doing that as long as it’s not performance-crical
12:16:12 <Profpatsch> e.g. most of the stuff in https://hackage.haskell.org/package/error-1.0.0.0/docs/src/Data.Error.html should probably have an INLINEABLE
12:16:20 <dminuoso> Profpatsch: so continuations allow for introduction of error cases (or multiple modes) which can assist stream fusion in some cases.
12:16:37 <dminuoso> if you dont ever care for that, might as well use State/StateT (possibly newtyped)
12:16:52 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
12:16:53 biberu\ joins (~biberu@user/biberu)
12:16:55 <dminuoso> Profpatsch: INLINEABLE is definitely good for such things, yes.
12:17:27 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
12:18:56 <dminuoso> Profpatsch: Another option by the way, to maintain fatal/non-fatal errors, if you have ST or IO available, is to keep `data Env = Env { fatal :: IORef [FatalError]; nonFatal :: IORef [Error]; warnings :: IORef [Warning]`
12:19:09 <dminuoso> This is more imperative, and perhaps sometimes an overlooked option
12:19:26 <Profpatsch> dminuoso: Ah, that’s probably the most performant one?
12:19:32 <Profpatsch> depends on how many errors happen
12:19:33 <dminuoso> Not necessarily
12:19:49 <Profpatsch> Also the errors will be in reverse order :P
12:20:04 <dminuoso> You can fix that with a DList or Seq
12:20:11 <dminuoso> Or just accept to reverse them at the end ocne
12:20:16 <dminuoso> (I just accept to reverse them)
12:20:37 <dminuoso> Profpatsch: the beauty of this, is that you get write IO heavy code, but not use StateT.
12:20:41 <dminuoso> So MonadUnliftIO is available
12:20:42 <Profpatsch> I’d probably newtype to ErrorList
12:20:46 <dminuoso> (And dont need to rely on MonadBaseControl)
12:20:47 <Profpatsch> then I can’t forget
12:20:55 × biberu quits (~biberu@user/biberu) (Ping timeout: 272 seconds)
12:20:55 biberu\ is now known as biberu
12:20:59 <Profpatsch> dminuoso: ah, yeah
12:21:21 <dminuoso> We use this in our SDN compiler precisely for that reason.
12:21:29 <Profpatsch> what’s a SDN?
12:21:33 <dminuoso> Networking stuff
12:21:44 <Profpatsch> Ah
12:22:09 <Profpatsch> yeah my use-case here is mostly parsing, which is as pure as it gets
12:22:20 <dminuoso> We even have combinators like >|> that sequence only if there are no errors set
12:22:31 <dminuoso> Or combinators that degrade fatal errors into non-fatal errors temporarily
12:22:38 <dminuoso> Bunch of tools to get fine flow control
12:22:40 <Profpatsch> wow so cool
12:22:43 <Profpatsch> I love Haskell
12:22:47 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds)
12:22:55 <dminuoso> Well I mean you can do this in any language, honestly
12:23:40 <Profpatsch> the “combinators” part is where most other static languages fail with the type inference though
12:23:42 × jonathanx__ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 250 seconds)
12:23:56 <dminuoso> Profpatsch: https://gist.github.com/dminuoso/a29d323eb25c8a6d48bdbf982c0892e2
12:24:05 <dminuoso> Well *this* does not need type infereence
12:24:06 jonathanx joins (~jonathan@c-5eea678b-74736162.cust.telenor.se)
12:24:18 <dminuoso> The only cute part is that we can define arbitrary combinators?
12:24:48 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:25:02 <dminuoso> And condemn just inspects the errors, and throws a BailOut exception by the way. :)
12:25:24 <Profpatsch> I tend not to go heavy on the operators but yeah
12:25:34 freeside joins (~mengwong@103.252.202.193)
12:26:27 <Profpatsch> My fav thing currently is newtype FieldParser err from to = FieldParser (from -> Either err to) instance Profunctor, Category, Semigroupoid
12:26:41 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:28:06 <Profpatsch> Might submit it to hackage at one point
12:28:12 rockystone joins (~rocky@user/rockymarine)
12:28:38 <dminuoso> Meaning I have to depend on semigroupoids to use it? :S
12:28:50 <Profpatsch> utf8 >>> unsignedDecimal >>> clamp 1 10 :: FieldParser ByteString Natural
12:28:54 <Profpatsch> it’s really not much more than that
12:29:06 <Profpatsch> But I think the concept & UX is pretty good
12:29:15 dminuoso shrugs
12:29:31 <dminuoso> Im not sure I like Category as a user interface much
12:29:54 <dminuoso> Is it really better than >>= here?
12:30:10 <Profpatsch> dminuoso: that’s what I’m trying to figure out yeah
12:30:12 × shriekingnoise quits (~shrieking@186.137.167.202) (Ping timeout: 250 seconds)
12:30:32 <Profpatsch> which is why I’ve not pushed it to hackage yeg
12:30:34 <Profpatsch> *yet
12:30:46 shriekingnoise joins (~shrieking@186.137.167.202)
12:32:14 <Profpatsch> it just composes nicely with other things, e.g. jsonString :: FieldParser Json.Value Text or attoparsecText :: Atto.Parser a -> FieldParser Text a
12:33:37 × jonathanx quits (~jonathan@c-5eea678b-74736162.cust.telenor.se) (Remote host closed the connection)
12:34:00 axeman joins (~quassel@2a02:8109:a380:78:bc30:5eb7:62c9:6689)
12:38:04 vglfr joins (~vglfr@145.224.100.190)
12:40:36 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 250 seconds)
12:43:22 <dminuoso> And it will make inlining *much* harder
12:44:17 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
12:45:39 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:45:39 <Profpatsch> dminuoso: newtypes influence inlining?
12:45:47 × Guest1875 quits (~a@49.207.231.197) (Remote host closed the connection)
12:45:48 <Profpatsch> that’s a first
12:46:34 <dminuoso> Well no, but each such combinator better be inlineable or inline'd
12:46:46 <dminuoso> Though.. for attoparsec I dont think it matters much
12:47:29 <Profpatsch> dminuoso: Ah, well, but they all specify an error message in the Left case, so idk if inlining is a good idea
12:47:47 <dminuoso> Oh right, there's that Either
12:47:59 <dminuoso> *that* will definitely ruin performance in a lot of examples
12:48:12 <dminuoso> It will prevent short cut fusion, it will make inlining hard
12:48:15 <Profpatsch> yes, the price to pay for good error messages :P
12:48:21 LukeHoersten joins (~LukeHoers@user/lukehoersten)
12:49:28 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
12:49:54 <[Leary]> I don't think it needs to go on hackage; we have `Kleisli` in base.
12:49:56 <Profpatsch> dminuoso: I’m guessing CPSsing would help here as well?
12:50:11 stackdroid18 joins (14094@user/stackdroid)
12:50:16 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:50:28 <dminuoso> Oh right, FieldParser ~ Kleisli Either
12:50:32 <dminuoso> Profpatsch: Perhaps.
12:50:55 <dminuoso> It will still make inlining more difficult for some types of parsers.
12:51:04 <Profpatsch> [Leary]: yes, it’s a specialised thing which solidifies a good practice
12:51:21 <Profpatsch> I personally think that’s a useful thing to have
12:52:26 <Profpatsch> [Leary]: also Kleisli has a lot of Arrow a => operators for legacy reasons
12:52:52 <Profpatsch> well, it’s from Control.Arrow
12:53:15 <Profpatsch> Personally, I’m more fond of Bifunctor, Profunctor etc
12:53:32 <Profpatsch> But I can understand that some people might prefer Arrows
12:53:35 rockystone joins (~rocky@user/rockymarine)
12:55:19 <[Leary]> It may be in Control.Arrow, but that doesn't mean you need to use Arrow. It has all the other instances you want, Profunctor etc.
12:56:14 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
12:56:15 <dminuoso> Nobody prefers arrows. :>
12:56:16 <[Leary]> I would at least derive all that via Kleisli.
12:56:33 <Profpatsch> [Leary]: why though? It makes it harder to understand
12:56:54 freeside joins (~mengwong@103.252.202.193)
12:57:09 <[Leary]> I don't see how. Most people understand Kleisli, so they'll know what you're doing at a glance.
12:57:22 <[Leary]> A new type requires inspection.
12:57:22 <dminuoso> "most" depends on your target audience.
12:57:22 <Profpatsch> Part of a production codebase is reducing the mental overhead of how things work
12:57:46 <Profpatsch> I wouldn’t want to explain to a new hire what Kleisli is if they want to understand FieldParser
12:57:56 × axeman quits (~quassel@2a02:8109:a380:78:bc30:5eb7:62c9:6689) (Ping timeout: 250 seconds)
12:58:05 <dminuoso> Yes, but now you have to explain FieldParser to them
12:58:14 <Profpatsch> It’s the classic “Having problem understanding 4 dimensions? Just imagine n dimensions and set n=4!”
12:58:16 <dminuoso> And why you have a separate type from Parser (from say attoparseec)
12:58:32 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds)
12:59:53 <Profpatsch> dminuoso: one parses horizontally (i.e. from a stream of tokens to a structure), the other vertically (from a bounded value to a smaller bounded value)
13:00:18 <Profpatsch> both are mostly orthogonal concepts
13:00:27 alternateved joins (~user@staticline-31-183-175-205.toya.net.pl)
13:00:40 <dminuoso> My flatparse parser does this by keeping combinators in separate modules. *shrugs*
13:00:40 Guest16 joins (~Guest16@p200300ef971835175dc5e8e509d3babc.dip0.t-ipconnect.de)
13:00:53 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:01:05 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Ping timeout: 272 seconds)
13:01:10 <dminuoso> That is, I have a Foo.Lexer module which exposes `Get T` type of things that parse tokens, and Foo.Parser that uses Foo.Lexer combinators to produce high level things
13:01:18 <dminuoso> It's all just `Get a`
13:01:27 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
13:01:50 <Profpatsch> dminuoso: is flatparse a Haskell version of nom?
13:01:55 <dminuoso> Yes
13:02:02 <Profpatsch> dminuoso: pretty cool, I might want to use that
13:02:48 × alternateved quits (~user@staticline-31-183-175-205.toya.net.pl) (Remote host closed the connection)
13:03:00 <Profpatsch> dminuoso: Ah, I had never mapped your IRC nick to your github handle before
13:03:18 <Profpatsch> dminuoso: were you at Zurihac and/or Munihac?
13:03:42 <dminuoso> We met at Zurihac
13:04:05 <Profpatsch> Me and my brain are best frens
13:04:47 <Profpatsch> dminuoso: the good thing, this way my brain can meet you next Zurihac, for the first time, all over again!
13:06:09 alternateved joins (~user@staticline-31-183-175-205.toya.net.pl)
13:06:13 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
13:06:30 rockystone joins (~rocky@user/rockymarine)
13:12:11 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 276 seconds)
13:12:47 × Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed)
13:13:22 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Read error: Connection timed out)
13:15:36 freeside joins (~mengwong@103.252.202.193)
13:16:01 × zer0bitz quits (~zer0bitz@2001:2003:f748:2000:d960:d98a:f624:8ef) (Read error: Connection reset by peer)
13:16:11 sameer joins (~sameer@2409:4070:2d3d:53f6::c049:8101)
13:18:19 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
13:23:51 × Guest16 quits (~Guest16@p200300ef971835175dc5e8e509d3babc.dip0.t-ipconnect.de) (Quit: Client closed)
13:24:03 <tdammers> heh... I, for one, am not always on speaking terms with my brain :D
13:24:22 <merijn> tdammers: facts
13:24:30 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
13:24:45 <merijn> Hell, most of my body tends to occasionally not be on speaking terms :p
13:25:19 geekosaur resembles that one
13:26:35 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
13:28:09 beteigeuze1 joins (~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73)
13:29:44 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 276 seconds)
13:29:44 beteigeuze1 is now known as beteigeuze
13:31:06 × chomwitt quits (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
13:31:30 chomwitt joins (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1)
13:32:17 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
13:32:42 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
13:32:45 ystael joins (~ystael@user/ystael)
13:33:38 × acidjnk quits (~acidjnk@p200300d6e7137a399c67b611784f46e2.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
13:34:39 freeside joins (~mengwong@103.252.202.193)
13:34:43 × mrvdb quits (~mrvdb@2001:19f0:5000:8582:5400:ff:fe07:3df5) (Quit: ZNC 1.8.2 - https://znc.in)
13:35:30 mrvdb joins (~mrvdb@185.92.221.186)
13:35:57 <Profpatsch> Okay, weird error: I changed some -> IO a to Applicative m => … -> m a
13:36:09 <Profpatsch> And suddenly a TypeApplication does not type check anymore
13:36:59 <Profpatsch> foo @Bar a b <- “Cannot apply expression of type a0 -> b -> a0 to visible type argument Bar”
13:37:22 <Profpatsch> Is this some weird interaction between the ApplicativeDo desugaring and TypeApplications?
13:37:36 <Profpatsch> the definition of `foo` is in a let-block above the code that fails
13:37:45 <Profpatsch> I will try moving it into a where clause, maybe this helps
13:38:15 <Profpatsch> Removing the type application seems to work, but that’s bad for code readability
13:39:06 <lortabac> are there other type variables in the signature before 'm'?
13:39:15 <Profpatsch> oh huh moving it to the where seems to work
13:39:28 <Profpatsch> lortabac: no, just the m
13:39:46 <Profpatsch> I’m a bit too lazy to produce a minimal example right now
13:40:13 <Profpatsch> It might interact with the enabled extensions in a weird way
13:40:20 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
13:41:06 <Profpatsch> I guess GHC removes the `a` from the definition of `foo` before it actually does the TypeApplication, so it’s gone at that point
13:43:07 LukeHoersten joins (~LukeHoers@user/lukehoersten)
13:45:35 <Profpatsch> funny, interspersing a `let` between the last _ <- ma and the final `pure $ …` will also switch from Applicative to Monad
13:45:40 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 244 seconds)
13:45:43 <Profpatsch> ApplicativeDo is really unstable holy crap
13:47:22 × BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection)
13:47:34 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
13:48:17 <Profpatsch> Ah, the algorithm is O(n^2) well
13:51:57 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
13:52:32 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
13:52:32 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
13:52:32 wroathe joins (~wroathe@user/wroathe)
13:56:21 BananaKing69441 joins (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net)
13:56:38 × BananaKing69441 quits (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Client Quit)
13:57:04 × BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) ()
13:57:20 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
13:57:40 LukeHoersten joins (~LukeHoers@user/lukehoersten)
13:58:16 j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
13:58:56 BananaKing694 is now known as j4cc3b_
13:59:29 × j4cc3b_ quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Client Quit)
14:01:08 BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
14:02:29 <kuribas> Profpatsch: maybe the `m` is not the first type argument of foo?
14:02:32 <kuribas> now
14:03:57 × akegalj quits (~akegalj@93-138-77-86.adsl.net.t-com.hr) (Quit: leaving)
14:04:33 <Profpatsch> kuribas: I had foo defined as let foo :: Read a -> a -> Maybe Text -> a
14:04:39 <Profpatsch> So m did not even appear in foo’s signature
14:04:48 <Profpatsch> I wanted to instantiate the `a`
14:05:30 × BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection)
14:05:31 <Profpatsch> Which is why I’m confused why the `a` suddenly disappears when you switch the m of the do-block outside from IO to Applicative m
14:05:43 <Profpatsch> and switch on ApplicativeDo
14:05:54 <geekosaur> is one of those ->s supposed to be a =>?
14:05:59 <Profpatsch> geekosaur: yes
14:06:02 <Profpatsch> the first
14:06:29 <Profpatsch> I thought maybe ScopedTypeVariables might fix it, but it doesn’t look like it does
14:06:32 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
14:06:40 <Profpatsch> moving the definition of foo from let to a where fixes it
14:06:48 <Profpatsch> I guess I can live with that
14:07:19 <geekosaur> istr that applicativedo has issues whth lets
14:07:33 <Profpatsch> geekosaur: is that a well-known fact?
14:07:58 <geekosaur> it's well known that it has lots of oddities and failure modes that "ought to" work
14:08:02 <Profpatsch> I’d prefer a separate `ado` tbh
14:08:07 <geekosaur> it's really fragile
14:08:09 <Profpatsch> or something along those lines
14:08:42 <tdammers> I'm still pretty convinced that there's no fundamental reason why applicative do couldn't work, but the problem seems to be that it's an afterthought
14:08:48 Sgeo joins (~Sgeo@user/sgeo)
14:09:00 nate2 joins (~nate@98.45.169.16)
14:09:29 <kuribas> Profpatsch: ApplicativeDo is quit buggy.
14:09:39 <Profpatsch> Hrm, maybe I’m gonna do Overloaded-Do and have a module for Applicative
14:09:42 <Profpatsch> Applicative.do
14:09:45 <Profpatsch> should work, no?
14:10:19 <kuribas> it also doesn't handle some obvious stuff, like let bindings.
14:10:36 <kuribas> Still, it's pretty handy with records.
14:11:07 <Profpatsch> Ah no, QualifiedDo just converts <- to >>=
14:12:31 <Profpatsch> You can always “prove” that it’s not Monad by returning `Applicative m => … -> m` and passing all required functions in `m` as arguments
14:12:42 <Profpatsch> I think that’s okay-ish
14:13:57 <Profpatsch> although … hm … that might not work with mtl-style class functions since they always depend on Monad
14:14:14 <Profpatsch> nvm it does
14:14:26 × j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Quit: Client closed)
14:14:35 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
14:14:37 j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
14:18:04 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:19:35 LukeHoersten_ joins (~LukeHoers@user/lukehoersten)
14:20:47 LukeHoersten__ joins (~LukeHoers@user/lukehoersten)
14:21:06 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 260 seconds)
14:23:47 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 272 seconds)
14:24:10 × LukeHoersten_ quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
14:27:19 Guest51 joins (~Guest51@50.47.90.28)
14:28:33 LukeHoersten joins (~LukeHoers@user/lukehoersten)
14:30:31 <kuribas> :t ask
14:30:32 <lambdabot> MonadReader r m => m r
14:31:32 × LukeHoersten__ quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
14:31:52 <kuribas> Profpatsch: why do you need to prove it's not a Monad? A Monad is an Applicative too :)
14:32:46 × Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed)
14:37:56 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
14:40:08 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
14:40:56 jonathanx joins (~jonathan@94.234.103.139)
14:42:21 rembo10 joins (~rembo10@main.remulis.com)
14:43:27 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
14:43:29 glguy joins (~glguy@libera/staff-emeritus/glguy)
14:44:18 × alternateved quits (~user@staticline-31-183-175-205.toya.net.pl) (Remote host closed the connection)
14:46:50 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
14:47:05 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
14:48:33 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
14:49:03 edrx joins (~Eduardo@2804:56c:d2d8:400:7ffb:83a1:5d67:a122)
14:49:44 × jonathanx quits (~jonathan@94.234.103.139) (Ping timeout: 250 seconds)
14:50:43 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: Textual IRC Client: www.textualapp.com)
14:51:55 × sameer quits (~sameer@2409:4070:2d3d:53f6::c049:8101) (Ping timeout: 272 seconds)
14:52:50 sameer joins (~sameer@2409:4070:6e10:74c0::81c8:d301)
15:03:43 <edrx> hi all... this is slightly off-topic, but right now this channel is the only in which I think I can an answer in less than one hour... =/ I'm trying to learn Tikz - mostly to draw string diagrams - and I'm mostly trying to translate its high-level constructs into lower-level ones...
15:04:52 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
15:05:24 freeside joins (~mengwong@103.252.202.193)
15:06:19 <edrx> but 1) I don't know if the two notions of "rectangle" below can be integrated, and how... and 2) I don't know any chats in which I can ask those questions. Any ideas?
15:07:03 <edrx> http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf#page=34
15:07:11 <edrx> http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf#page=785
15:08:50 Guest51 joins (~Guest51@50.47.90.28)
15:11:38 axeman joins (~quassel@2a02:8109:a380:78:7810:2127:b425:57c7)
15:13:05 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 276 seconds)
15:15:38 Guest2956 joins (~Guest29@pool-108-54-69-191.nycmny.fios.verizon.net)
15:15:55 <Guest2956> why is this outputting an error?
15:16:00 <Guest2956> *Main> mapMaybe (+2) [Just 10, Nothing]
15:16:01 <Guest2956> <interactive>:15:1: error:
15:16:01 <Guest2956>     • Non type-variable argument in the constraint: Num (Maybe b)
15:16:02 <Guest2956>       (Use FlexibleContexts to permit this)
15:16:02 <Guest2956>     • When checking the inferred type
15:16:03 <Guest2956>         it :: forall b. (Num b, Num (Maybe b)) => [b]
15:16:50 <merijn> :t mapMaybe
15:16:51 <lambdabot> (a -> Maybe b) -> [a] -> [b]
15:17:08 <merijn> (+2) does not return a Maybe
15:17:30 <merijn> Or rather
15:17:37 <geekosaur> I think you have the sense of mapMaybe reversed
15:17:38 <merijn> :t (+2)
15:17:39 <lambdabot> Num a => a -> a
15:18:09 <merijn> It's interpreting "(+2)" as having type "Num (Maybe b) => Maybe b -> Maybe b"
15:18:46 × Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed)
15:19:03 Everything joins (~Everythin@static.208.206.21.65.clients.your-server.de)
15:22:53 <Guest2956> can you give an example of a correct function using mapMaybe?
15:22:56 mvk joins (~mvk@2607:fea8:5ce3:8500::a80f)
15:26:32 <ridcully> Data.Maybe.mapMaybe Data.Maybe.listToMaybe [[], [1]]
15:26:33 rockystone joins (~rocky@user/rockymarine)
15:28:47 × juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 260 seconds)
15:29:00 × j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds)
15:30:03 motherfsck joins (~motherfsc@user/motherfsck)
15:30:04 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:ad98:9d00:b84f:455) (Quit: WeeChat 2.8)
15:32:11 Tuplanolla joins (~Tuplanoll@91-159-69-240.elisa-laajakaista.fi)
15:33:02 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
15:33:30 × axeman quits (~quassel@2a02:8109:a380:78:7810:2127:b425:57c7) (Ping timeout: 250 seconds)
15:37:46 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
15:40:27 <merijn> > let x `divBy` y | y == 0 = Nothing; | otherwise = Just (x `div` y) in 5 `divBy` 2
15:40:37 <lambdabot> <hint>:1:37: error: parse error on input ‘|’
15:40:43 <merijn> bah
15:40:45 <merijn> ok, I don't know how to do guards to an easy example :p
15:44:02 boxscape_ joins (~boxscape_@81.191.27.107)
15:44:21 × jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
15:46:04 × danza quits (~francesco@151.43.124.110) (Ping timeout: 250 seconds)
15:46:46 jakalx joins (~jakalx@base.jakalx.net)
15:48:11 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
15:49:15 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7)
15:49:36 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
15:49:40 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
15:50:26 nate2 joins (~nate@98.45.169.16)
15:51:58 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
15:52:02 <geekosaur> drop the semicolon
15:52:15 <geekosaur> > let x `divBy` y | y == 0 = Nothing | otherwise = Just (x `div` y) in 5 `divBy` 2
15:52:17 <lambdabot> Just 2
15:53:23 <Profpatsch> kuribas: because I can do more with an Applicative than what I can do with a Monad
15:56:28 × darkstardevx quits (~darkstard@50.126.124.156) (Ping timeout: 250 seconds)
15:57:20 × merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
15:58:53 danza joins (~francesco@rm-19-18-125.service.infuturo.it)
15:59:30 juri_ joins (~juri@79.140.114.58)
16:06:11 edrx parts (~Eduardo@2804:56c:d2d8:400:7ffb:83a1:5d67:a122) (Killed buffer)
16:07:00 merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl)
16:07:18 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
16:10:11 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
16:10:17 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds)
16:11:09 erisco_ joins (~erisco@d24-141-66-165.home.cgocable.net)
16:11:42 econo joins (uid147250@user/econo)
16:13:28 × erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 268 seconds)
16:13:28 erisco_ is now known as erisco
16:14:56 j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
16:18:41 rockystone joins (~rocky@user/rockymarine)
16:23:28 freeside joins (~mengwong@103.252.202.193)
16:23:37 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
16:24:46 rockystone joins (~rocky@user/rockymarine)
16:31:47 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
16:34:27 rockystone joins (~rocky@user/rockymarine)
16:36:56 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 276 seconds)
16:38:23 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
16:39:31 acidjnk joins (~acidjnk@p54ad5adb.dip0.t-ipconnect.de)
16:40:06 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
16:41:04 cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107)
16:41:07 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
16:43:37 × j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Quit: Client closed)
16:44:01 × siraben quits (~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
16:44:01 × ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
16:44:01 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
16:44:01 × RosarioPulella[m quits (~rosariopu@2001:470:69fc:105::a57) (Quit: Bridge terminating on SIGTERM)
16:44:01 × ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
16:44:01 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
16:44:01 × mekeor[m] quits (~mekeormat@2001:470:69fc:105::17e4) (Quit: Bridge terminating on SIGTERM)
16:44:01 × peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
16:44:02 × famubu[m] quits (~famubumat@2001:470:69fc:105::1081) (Quit: Bridge terminating on SIGTERM)
16:44:02 × sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
16:44:02 × Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
16:44:02 × vladan[m] quits (~vladanmat@2001:470:69fc:105::2:24df) (Quit: Bridge terminating on SIGTERM)
16:44:02 × jinsun_ quits (~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM)
16:44:02 × nicmollel[m] quits (~nicmollel@2001:470:69fc:105::1:feeb) (Quit: Bridge terminating on SIGTERM)
16:44:02 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
16:44:02 × aviladev[m] quits (~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: Bridge terminating on SIGTERM)
16:44:02 × cp1313[m] quits (~cp1313mat@2001:470:69fc:105::2:9293) (Quit: Bridge terminating on SIGTERM)
16:44:02 × loosh[m] quits (~looshchat@2001:470:69fc:105::2:5ddd) (Quit: Bridge terminating on SIGTERM)
16:44:02 × VarikValefor[m] quits (~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM)
16:44:02 × fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
16:44:02 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
16:44:02 × SeanKing[m] quits (~seankingm@2001:470:69fc:105::cf9c) (Quit: Bridge terminating on SIGTERM)
16:44:02 × Deide quits (~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
16:44:02 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
16:44:02 × chreekat quits (~chreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
16:44:02 × geekosaur[m] quits (~geekosaur@xmonad/geekosaur) (Quit: Bridge terminating on SIGTERM)
16:44:02 × sektor[m] quits (~sektor@2001:470:69fc:105::2:3f60) (Quit: Bridge terminating on SIGTERM)
16:44:02 × fr33domlover[m] quits (~fr33domlo@2001:470:69fc:105::1:3bb6) (Quit: Bridge terminating on SIGTERM)
16:44:02 × lawt quits (~lawtonmat@2001:470:69fc:105::2:97b8) (Quit: Bridge terminating on SIGTERM)
16:44:02 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
16:44:02 × Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
16:44:02 × oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
16:44:02 × BB[m] quits (~cashmagem@2001:470:69fc:105::f6dc) (Quit: Bridge terminating on SIGTERM)
16:44:02 × jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM)
16:44:02 × schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
16:44:02 × olivermead[m] quits (~olivermea@2001:470:69fc:105::2:4289) (Quit: Bridge terminating on SIGTERM)
16:44:03 × SridharRatnakuma quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
16:44:03 × Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
16:44:03 × romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (Quit: Bridge terminating on SIGTERM)
16:44:03 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
16:44:03 × aaronv quits (~aaronv@user/aaronv) (Quit: Bridge terminating on SIGTERM)
16:44:03 × Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
16:44:03 × Guillaum[m] quits (~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM)
16:44:03 × ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
16:44:03 × baaash[m] quits (~baaashmat@2001:470:69fc:105::2:1e90) (Quit: Bridge terminating on SIGTERM)
16:44:03 × jz99[m] quits (~jz99matri@2001:470:69fc:105::1:d5f1) (Quit: Bridge terminating on SIGTERM)
16:44:03 × elvishjerricco quits (~elvishjer@2001:470:69fc:105::6172) (Quit: Bridge terminating on SIGTERM)
16:44:03 × foghorn quits (~foghorn@user/foghorn) (Quit: Bridge terminating on SIGTERM)
16:44:03 × VanceIsM7[m] quits (~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM)
16:44:03 × ozkutuk[m] quits (~ozkutuk@2001:470:69fc:105::2:9af8) (Quit: Bridge terminating on SIGTERM)
16:44:03 × drsooch[m] quits (~drsoochma@2001:470:69fc:105::1:c8a1) (Quit: Bridge terminating on SIGTERM)
16:44:03 × jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Quit: Bridge terminating on SIGTERM)
16:44:03 × july541[m] quits (~july541ma@2001:470:69fc:105::1:e416) (Quit: Bridge terminating on SIGTERM)
16:44:03 × expipiplus1 quits (~expipiplu@2001:470:69fc:105::d713) (Quit: Bridge terminating on SIGTERM)
16:44:03 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
16:44:03 × sibnull[m] quits (~sibnullma@2001:470:69fc:105::1:1291) (Quit: Bridge terminating on SIGTERM)
16:44:03 × silky[m] quits (~noonvande@2001:470:69fc:105::2:943c) (Quit: Bridge terminating on SIGTERM)
16:44:03 × rockymarine[m] quits (~rockymari@2001:470:69fc:105::2:9a0c) (Quit: Bridge terminating on SIGTERM)
16:44:03 × CeNiEi[m] quits (~cenieimat@2001:470:69fc:105::1:894c) (Quit: Bridge terminating on SIGTERM)
16:44:03 × pareto-optimal-d quits (~pareto-op@2001:470:69fc:105::1:b61f) (Quit: Bridge terminating on SIGTERM)
16:44:03 × cafkafk[m] quits (~cafkafkma@2001:470:69fc:105::1:cea8) (Quit: Bridge terminating on SIGTERM)
16:44:03 × bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
16:44:03 × jbggs[m] quits (~jbggsmatr@2001:470:69fc:105::2:995f) (Quit: Bridge terminating on SIGTERM)
16:44:03 × M3g-mentok[m] quits (~M3g-mento@2001:470:69fc:105::2:9a49) (Quit: Bridge terminating on SIGTERM)
16:44:03 × weeezes[m] quits (~weeezesma@2001:470:69fc:105::1:da65) (Quit: Bridge terminating on SIGTERM)
16:44:04 × Neosake[m] quits (~neosakema@2001:470:69fc:105::2:989e) (Quit: Bridge terminating on SIGTERM)
16:44:04 × afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
16:44:04 × Clinton[m] quits (~clintonme@2001:470:69fc:105::2:31d4) (Quit: Bridge terminating on SIGTERM)
16:44:05 × disco-dave[m] quits (~disco-dav@2001:470:69fc:105::2:1892) (Quit: Bridge terminating on SIGTERM)
16:44:05 × JensPetersen[m] quits (~juhp@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM)
16:44:05 × kiri1606[m] quits (~kiri1606m@2001:470:69fc:105::2:8ec9) (Quit: Bridge terminating on SIGTERM)
16:44:05 × aidy quits (~aidy@2001:470:69fc:105::c7b4) (Quit: Bridge terminating on SIGTERM)
16:44:05 × JonathanWatson[m quits (~jjwmatrix@2001:470:69fc:105::2:a544) (Quit: Bridge terminating on SIGTERM)
16:44:13 × mimi1vx[m] quits (~osukupmat@2001:470:69fc:105::2:418d) (Quit: Bridge terminating on SIGTERM)
16:44:13 × psydroid quits (~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
16:44:13 × nomagno quits (~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM)
16:44:14 × Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
16:44:14 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
16:44:14 × jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
16:44:14 × MangoIV[m] quits (~mangoivma@2001:470:69fc:105::2:8417) (Quit: Bridge terminating on SIGTERM)
16:44:14 × mesaoptimizer2 quits (~mesaoptim@user/PapuaHardyNet) (Quit: Bridge terminating on SIGTERM)
16:44:14 × kadoban quits (~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
16:44:18 × RowanG[m] quits (~rowang077@2001:470:69fc:105::1:ca9f) (Quit: Bridge terminating on SIGTERM)
16:44:22 <cheater> what's your favourite clean way to do this without writing your own recursion? myLoop acc = do { ended <- ioIsEnded; if ended { putStrLn "ended" } else { x <- myIO; let acc = pureFun acc x; myLoop acc; }
16:45:17 × danza quits (~francesco@rm-19-18-125.service.infuturo.it) (Read error: Connection reset by peer)
16:45:29 rockystone joins (~rocky@user/rockymarine)
16:45:41 danza joins (~francesco@rm-19-18-125.service.infuturo.it)
16:45:41 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
16:46:52 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:48:16 <Rembane> cheater: Perhaps using whileM? https://hackage.haskell.org/package/monad-loops-0.4.3/docs/Control-Monad-Loops.html
16:48:24 fgaz joins (~fgaz@2001:470:69fc:105::842)
16:48:36 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:48:42 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
16:49:28 <cheater> i'm just wondering what everyone uses since it's a good idea to ask about simple stuff like that
16:49:30 peddie joins (~peddie@2001:470:69fc:105::25d)
16:49:30 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
16:49:30 famubu[m] joins (~famubumat@2001:470:69fc:105::1081)
16:49:30 maralorn joins (~maralorn@2001:470:69fc:105::251)
16:49:30 sm joins (~sm@plaintextaccounting/sm)
16:49:42 Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8)
16:49:42 ongy[m] joins (~ongymatri@2001:470:69fc:105::5018)
16:49:56 kiri1606[m] joins (~kiri1606m@2001:470:69fc:105::2:8ec9)
16:49:56 siraben joins (~siraben@user/siraben)
16:50:08 july541[m] joins (~july541ma@2001:470:69fc:105::1:e416)
16:50:09 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
16:50:21 SridharRatnakuma joins (~sridmatri@2001:470:69fc:105::1c2)
16:50:22 chreekat joins (~chreekat@2001:470:69fc:105::16b5)
16:50:23 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
16:50:28 <cheater> whileM keeps a partial list around
16:50:43 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds)
16:50:49 <cheater> but i guess i actually do need to keep one hmm
16:50:56 sibnull[m] joins (~sibnullma@2001:470:69fc:105::1:1291)
16:51:10 expipiplus1 joins (~expipiplu@2001:470:69fc:105::d713)
16:51:22 ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be)
16:51:22 fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd)
16:51:37 bb010g joins (~bb010g@2001:470:69fc:105::9a5)
16:51:37 oak- joins (~oakuniver@2001:470:69fc:105::fcd)
16:51:37 jmcantrell joins (~jmcantrel@user/jmcantrell)
16:51:38 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
16:51:38 jinsun_ joins (~jinsun@user/jinsun)
16:51:38 romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660)
16:51:38 JensPetersen[m] joins (~juhp@2001:470:69fc:105::6e9)
16:51:38 ormaaj joins (~ormaaj@user/ormaaj)
16:51:38 cp1313[m] joins (~cp1313mat@2001:470:69fc:105::2:9293)
16:51:38 kadoban joins (~kadoban@user/kadoban)
16:51:38 BB[m] joins (~cashmagem@2001:470:69fc:105::f6dc)
16:51:39 Guillaum[m] joins (~guiboumat@2001:470:69fc:105::1:72ac)
16:51:53 silky[m] joins (~noonvande@2001:470:69fc:105::2:943c)
16:51:54 nicmollel[m] joins (~nicmollel@2001:470:69fc:105::1:feeb)
16:51:54 RosarioPulella[m joins (~rosariopu@2001:470:69fc:105::a57)
16:51:54 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
16:51:54 jneira[m] joins (~jneiramat@2001:470:69fc:105::d729)
16:51:54 Matthew|m joins (~arathorn@2001:470:69fc:105::1f)
16:51:54 lawt joins (~lawtonmat@2001:470:69fc:105::2:97b8)
16:51:54 RowanG[m] joins (~rowang077@2001:470:69fc:105::1:ca9f)
16:51:54 Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0)
16:51:54 vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe)
16:52:06 CeNiEi[m] joins (~cenieimat@2001:470:69fc:105::1:894c)
16:52:08 drsooch[m] joins (~drsoochma@2001:470:69fc:105::1:c8a1)
16:52:08 olivermead[m] joins (~olivermea@2001:470:69fc:105::2:4289)
16:52:21 Neosake[m] joins (~neosakema@2001:470:69fc:105::2:989e)
16:52:34 aidy joins (~aidy@2001:470:69fc:105::c7b4)
16:52:46 jbggs[m] joins (~jbggsmatr@2001:470:69fc:105::2:995f)
16:52:58 rockymarine[m] joins (~rockymari@2001:470:69fc:105::2:9a0c)
16:52:58 loosh[m] joins (~looshchat@2001:470:69fc:105::2:5ddd)
16:53:10 M3g-mentok[m] joins (~M3g-mento@2001:470:69fc:105::2:9a49)
16:53:24 disco-dave[m] joins (~disco-dav@2001:470:69fc:105::2:1892)
16:53:25 Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56)
16:53:25 Tisoxin joins (~ikosit@user/ikosit)
16:53:25 ozkutuk[m] joins (~ozkutuk@2001:470:69fc:105::2:9af8)
16:53:25 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
16:53:26 foghorn joins (~foghorn@user/foghorn)
16:53:26 unclechu joins (~unclechu@2001:470:69fc:105::354)
16:53:26 baaash[m] joins (~baaashmat@2001:470:69fc:105::2:1e90)
16:53:26 mimi1vx[m] joins (~osukupmat@2001:470:69fc:105::2:418d)
16:53:26 sektor[m] joins (~sektor@2001:470:69fc:105::2:3f60)
16:53:38 Clinton[m] joins (~clintonme@2001:470:69fc:105::2:31d4)
16:53:38 mekeor[m] joins (~mekeormat@2001:470:69fc:105::17e4)
16:53:38 vladan[m] joins (~vladanmat@2001:470:69fc:105::2:24df)
16:53:38 elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172)
16:53:39 geekosaur[m] joins (~geekosaur@xmonad/geekosaur)
16:53:39 VarikValefor[m] joins (~varikvale@2001:470:69fc:105::a5d)
16:53:39 jz99[m] joins (~jz99matri@2001:470:69fc:105::1:d5f1)
16:53:39 nomagno joins (~nomagno@2001:470:69fc:105::c1f0)
16:53:39 jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab)
16:53:39 aviladev[m] joins (~aviladevm@2001:470:69fc:105::1:cbc7)
16:53:39 Deide joins (~deide@user/deide)
16:53:39 fr33domlover[m] joins (~fr33domlo@2001:470:69fc:105::1:3bb6)
16:53:54 afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b)
16:53:55 cafkafk[m] joins (~cafkafkma@2001:470:69fc:105::1:cea8)
16:53:56 VanceIsM7[m] joins (~vanceism7@2001:470:69fc:105::3ad)
16:54:10 × juri_ quits (~juri@79.140.114.58) (Read error: Connection reset by peer)
16:54:31 pareto-optimal-d joins (~pareto-op@2001:470:69fc:105::1:b61f)
16:54:34 SeanKing[m] joins (~seankingm@2001:470:69fc:105::cf9c)
16:54:35 aaronv joins (~aaronv@user/aaronv)
16:54:35 MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417)
16:54:35 psydroid joins (~psydroid@user/psydroid)
16:54:35 schuelermine[m] joins (~schuelerm@user/schuelermine)
16:54:35 mesaoptimizer2 joins (~mesaoptim@user/PapuaHardyNet)
16:54:47 JonathanWatson[m joins (~jjwmatrix@2001:470:69fc:105::2:a544)
16:54:59 weeezes[m] joins (~weeezesma@2001:470:69fc:105::1:da65)
16:57:57 juri_ joins (~juri@79.140.114.58)
17:00:08 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:01:01 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
17:01:52 × Guest2956 quits (~Guest29@pool-108-54-69-191.nycmny.fios.verizon.net) (Quit: Client closed)
17:02:36 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
17:03:10 × juri_ quits (~juri@79.140.114.58) (Ping timeout: 252 seconds)
17:03:12 zer0bitz joins (~zer0bitz@2001:2003:f748:2000:f433:1323:4e67:752d)
17:04:04 j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
17:04:21 rockystone joins (~rocky@user/rockymarine)
17:04:52 juri_ joins (~juri@84-19-175-179.pool.ovpn.com)
17:06:50 × rockystone quits (~rocky@user/rockymarine) (Read error: Connection reset by peer)
17:07:32 × nschoe quits (~q@141.101.51.197) (Ping timeout: 250 seconds)
17:08:14 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:09:27 jakalx joins (~jakalx@base.jakalx.net)
17:10:08 × boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection)
17:10:11 zer0bitz_ joins (~zer0bitz@2001:2003:f748:2000:48a6:74bf:500d:5c90)
17:10:24 boxscape_ joins (~boxscape_@81.191.27.107)
17:11:37 littlefinger joins (~littlefin@pool-100-15-237-121.washdc.fios.verizon.net)
17:12:19 × zer0bitz quits (~zer0bitz@2001:2003:f748:2000:f433:1323:4e67:752d) (Ping timeout: 255 seconds)
17:12:45 × kuribas quits (~user@ptr-17d51emnxyldefiap63.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
17:13:15 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
17:15:00 × oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Reconnecting)
17:15:16 oak- joins (~oak-@2001:470:69fc:105::fcd)
17:17:05 darkstardevx joins (~darkstard@50.126.124.156)
17:17:36 kimjetwav joins (~user@2607:fea8:235e:b600:b115:f56:940e:2252)
17:22:45 × ghoulpine quits (xfnw@tilde.team) (Quit: Connection reset by purr)
17:24:14 × boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection)
17:24:31 boxscape_ joins (~boxscape_@81.191.27.107)
17:25:44 × merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
17:26:20 × beteigeuze quits (~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) (Ping timeout: 276 seconds)
17:30:07 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
17:30:29 axeman joins (~quassel@2a02:8109:a380:78:dcd3:d662:889b:778e)
17:34:04 zebrag joins (~chris@user/zebrag)
17:35:36 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
17:35:37 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:36:42 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
17:36:55 × boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection)
17:37:12 boxscape_ joins (~boxscape_@81.191.27.107)
17:37:29 slack1256 joins (~slack1256@186.11.46.162)
17:37:59 × zer0bitz_ quits (~zer0bitz@2001:2003:f748:2000:48a6:74bf:500d:5c90) (Read error: Connection reset by peer)
17:40:54 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 250 seconds)
17:41:01 gentauro joins (~gentauro@user/gentauro)
17:43:25 <slack1256> Nixos by default compiles libraries dynamically for haskell projects. IIRC this made monomorphization difficult, is that right?
17:43:56 × cytokine_storm quits (~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 250 seconds)
17:45:45 zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
17:47:17 <dminuoso> lyxia: Oh gosh! All my mistakes were in assuming the phases went from 0 to 2, but they go backwards. clearly.
17:47:34 <[exa]> slack1256: by "monomorphization" you mean "making optimized non-polymorphic variants of functions" right? if so, information for inlining is actually present in .hi files and so the dynamic status of the library doesn't really make much difference
17:47:39 zer0bitz joins (~zer0bitz@2001:2003:f748:2000:99dc:7f1f:c53d:641d)
17:49:45 <dolio> Dynamic linking doesn't prevent any optimizations, I think.
17:50:48 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
17:50:48 <monochrom> The optimizer stage and the code generator stage are not told about linking options.
17:51:02 <monochrom> IOW orthogonal and independent etc.
17:51:13 <jle`> nshepperd2: ah, thanks! was curious how it'd look in haskell :) it's a pretty interesting/neat dynamic programming problem
17:51:27 <dolio> Which could mean that 'dynamic linking' is meaningless, because all the code from the library has been inlined already.
17:51:56 <dolio> Although that's somewhat unlikely in most cases.
17:51:57 merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl)
17:52:29 <monochrom> Oh, in practice inlining happens more often than pessimists think and less often than optimists think. :)
17:53:36 <dminuoso> In other words, everybody is wrong?
17:53:45 <Rembane> The best kind of wrong!
17:53:46 <monochrom> The RTS is never inlined. This is how exe size can be much smaller under dynamic linking.
17:53:47 <[exa]> safe assumption.
17:55:16 <monochrom> Or rather, this puts an upper bound.
17:57:37 × zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 246 seconds)
17:58:17 freeside joins (~mengwong@103.252.202.193)
17:58:50 × fserucas|eod quits (~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 276 seconds)
18:00:46 <[exa]> are there any vital alternatives to haskeline?
18:01:38 <dminuoso> There's wizards
18:01:52 <dminuoso> Which I guess is just a higher level wrapper around haskeline, but its there.
18:03:57 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
18:06:36 zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
18:07:52 × boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection)
18:08:09 boxscape_ joins (~boxscape_@81.191.27.107)
18:08:52 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
18:09:21 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
18:14:57 × Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 272 seconds)
18:16:13 freeside joins (~mengwong@103.252.202.193)
18:17:03 <[exa]> ah ok, let's go haskeline then, thanks :]
18:24:06 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
18:24:33 ec joins (~ec@gateway/tor-sasl/ec)
18:26:21 × merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
18:29:32 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
18:32:01 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
18:39:13 barak joins (~barak@2a0d:6fc2:68c0:ce00:ef5e:afee:320:8603)
18:40:20 × Everything quits (~Everythin@static.208.206.21.65.clients.your-server.de) (Quit: leaving)
18:45:44 nate2 joins (~nate@98.45.169.16)
18:50:14 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 250 seconds)
18:50:55 × barak quits (~barak@2a0d:6fc2:68c0:ce00:ef5e:afee:320:8603) (Quit: WeeChat 3.7.1)
18:52:25 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
18:58:45 Kaipei joins (~Kaiepi@108.175.84.104)
19:04:29 gqplox joins (~textual@147.188.245.207)
19:04:51 <gqplox> hi ive made a funcitno recursiveConcat :: [[a]] -> [a]
19:04:57 <gqplox> recursiveconcat [] = []
19:05:20 <gqplox> reucsriveconcat xxs = head xxs ++ recursiveconcat (tail xxs)
19:05:34 <gqplox> it works fine but i don't understand why
19:05:52 <gqplox> recursiveconcat xxs = head xxs ++ recursiveconcat $ tail xxs
19:05:54 <gqplox> is wrong
19:10:58 <monochrom> Oh probably because "foo ++ bar $ x" means "(foo ++ bar) x" not "foo ++ (bar x)"
19:11:35 <monochrom> This is why "$ replaces ()" is a naïve model.
19:12:05 <gqplox> Wait what
19:12:23 <gqplox> i didn't expect that
19:12:52 <gqplox> thanks for the reply
19:12:57 <gqplox> where should I look to find the 'correct' way of looking at $ then?
19:13:22 P1RATEZ joins (piratez@user/p1ratez)
19:13:47 lortabac joins (~lortabac@2a01:e0a:541:b8f0:8c46:781f:98f3:6c99)
19:13:51 × danza quits (~francesco@rm-19-18-125.service.infuturo.it) (Ping timeout: 272 seconds)
19:14:07 ec joins (~ec@gateway/tor-sasl/ec)
19:14:17 <monochrom> A combination of operator precedence ($ is lower than all other operators) and the equation (f) $ (x) = (f) (x).
19:15:06 <monochrom> If that is too complicated, a simple rule of thumb is "just don't use $". :)
19:15:29 ft joins (~ft@p3e9bc845.dip0.t-ipconnect.de)
19:15:43 <monochrom> $ is extremely optional, you can ignore it until you're ready.
19:16:40 <monochrom> Explicit parentheses is more explicit and requires less memorizing operator precedence levels.
19:17:36 <gqplox> Oh cool I wrote it out and understand how it gets there, thanks
19:17:52 <gqplox> Although i think ill only use it for when its completely obvious for now
19:19:13 vulpine joins (xfnw@tilde.team)
19:20:38 × zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
19:22:06 redmp joins (~redmp@airbears2-136-152-143-223.airbears2.berkeley.edu)
19:22:27 vulpine is now known as ghoulpine
19:22:57 × ralu1 quits (~ralu@static.211.245.203.116.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
19:22:58 × mvk quits (~mvk@2607:fea8:5ce3:8500::a80f) (Ping timeout: 272 seconds)
19:32:02 × redmp quits (~redmp@airbears2-136-152-143-223.airbears2.berkeley.edu) (Ping timeout: 260 seconds)
19:33:44 pavonia joins (~user@user/siracusa)
19:33:46 <dminuoso> monochrom: Mmm, that statement `"foo ++ bar $ x" means "(foo ++ bar) x" not "foo ++ (bar x)"` by itself can be confusing too.
19:34:42 <monochrom> How?
19:35:03 <dminuoso> I would, for clarity sake, add parens around `x` as well.
19:36:38 mc47 joins (~mc47@xmonad/TheMC47)
19:37:58 merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl)
19:40:14 MajorBiscuit joins (~MajorBisc@mob-109-118-119-253.net.vodafone.it)
19:44:01 <davean> monochrom: uh, didn't you just describe the "$ replaces ()" model and then said that was why it was naive?
19:44:33 <monochrom> How?
19:44:51 <davean> Because "foo ++ bar $ x" => "(foo ++ bar) (x)"
19:45:23 <davean> which you then simplified and said "means \"(foo ++ bar) x\""
19:45:52 <monochrom> "$ replaces ()" includes both that and "foo ++ (bar x)".
19:46:20 <monochrom> Err no.
19:46:23 <davean> I was told "put parents around the full expression on both sides of the $"
19:46:31 <monochrom> Err yes.
19:48:15 <monochrom> That's never how people use "$ replaces ()".
19:48:26 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
19:48:42 <davean> It isn't? Thats what this channel gave me when I first learned haskell
19:48:49 <dminuoso> davean: That leaves us just to talk about right and left associativity, and how ($) should be infixl and not infixr!
19:48:59 <monochrom> How people use it: Start with an expression that has some () but no $, then replace all () by $. That direction doesn't work.
19:49:16 <davean> oh huh, ok, thats NOT what I ever heard
19:50:26 <monochrom> This is a special case of how people never proofread their own writing.
19:50:34 <dminuoso> What do you folks think. Is the fixity of ($) wrong?
19:50:46 <dolio> Yes.
19:50:56 <dolio> But it's too late to fix it.
19:51:42 <monochrom> I.e., people never work this backward crosscheck direction: "Now that I have code that uses $, let me replace $ by (), impartially, and see if it really means what I want".
19:52:09 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
19:52:39 <monochrom> In general people never check what their wording actually comes across to other people/computer.
19:52:58 ec joins (~ec@gateway/tor-sasl/ec)
19:53:06 dextaa joins (~DV@user/dextaa)
19:53:38 jmdaemon joins (~jmdaemon@user/jmdaemon)
19:54:01 × mokee quits (~mokee@37.228.215.235) (Quit: off)
19:57:40 × littlefinger quits (~littlefin@pool-100-15-237-121.washdc.fios.verizon.net) (Ping timeout: 244 seconds)
19:59:08 × axeman quits (~quassel@2a02:8109:a380:78:dcd3:d662:889b:778e) (Ping timeout: 250 seconds)
19:59:29 Guest51 joins (~Guest51@205.175.106.104)
19:59:50 × gqplox quits (~textual@147.188.245.207) (Quit: Textual IRC Client: www.textualapp.com)
20:02:59 × caryhartline quits (~caryhartl@2600:1700:2d0:8d30:d4cb:6221:97a6:c0bc) (Quit: caryhartline)
20:03:02 × Guest51 quits (~Guest51@205.175.106.104) (Client Quit)
20:04:16 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
20:04:41 Guest51 joins (~Guest51@205.175.106.104)
20:05:39 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:8c46:781f:98f3:6c99) (Quit: WeeChat 2.8)
20:05:56 × j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds)
20:07:02 × merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
20:09:45 cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107)
20:12:20 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
20:15:18 birdgoose joins (~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac)
20:15:55 × birdgoose quits (~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac) (Client Quit)
20:16:03 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:16:13 birdgoose joins (~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac)
20:19:30 × m5zs7k quits (aquares@web10.mydevil.net) (*.net *.split)
20:19:30 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (*.net *.split)
20:19:30 × Ranhir quits (~Ranhir@157.97.53.139) (*.net *.split)
20:19:30 × taeaad quits (~taeaad@user/taeaad) (*.net *.split)
20:19:30 × stefan-_ quits (~cri@42dots.de) (*.net *.split)
20:19:30 × Inoperable quits (~PLAYER_1@fancydata.science) (*.net *.split)
20:19:30 × asm quits (~alexander@user/asm) (*.net *.split)
20:19:30 × zachel quits (~zachel@user/zachel) (*.net *.split)
20:19:30 × codedmart quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split)
20:19:30 × cods quits (~fred@82-65-232-44.subs.proxad.net) (*.net *.split)
20:19:30 × eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (*.net *.split)
20:19:30 × Igloo quits (~ian@matrix.chaos.earth.li) (*.net *.split)
20:19:30 × dcoutts__ quits (~duncan@host86-163-164-210.range86-163.btcentralplus.com) (*.net *.split)
20:19:30 × AkechiShiro quits (~licht@user/akechishiro) (*.net *.split)
20:19:30 × gnyeki quits (~gnyeki@user/gnyeki) (*.net *.split)
20:19:31 × spaced quits (uid572193@user/spaced) (*.net *.split)
20:19:31 × stilgart quits (~Christoph@chezlefab.net) (*.net *.split)
20:19:31 × GoldsteinQ quits (~goldstein@goldstein.rs) (*.net *.split)
20:19:31 × phileasfogg quits (~phileasfo@user/phileasfogg) (*.net *.split)
20:19:31 × nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split)
20:19:31 × Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (*.net *.split)
20:19:31 × spider_ quits (~spider@vps-951ce37a.vps.ovh.ca) (*.net *.split)
20:19:31 × DigitalKiwi quits (~kiwi@2604:a880:400:d0::1ca0:e001) (*.net *.split)
20:19:31 × ddb quits (~ddb@tilde.club) (*.net *.split)
20:19:31 × lieven quits (~mal@ns2.wyrd.be) (*.net *.split)
20:19:31 × kaskal quits (~kaskal@2001:4bb8:2dc:7b0e:55ee:692c:e44d:a4b0) (*.net *.split)
20:19:31 × meinside quits (uid24933@id-24933.helmsley.irccloud.com) (*.net *.split)
20:19:31 × earthy quits (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) (*.net *.split)
20:19:31 × kristjansson quits (sid126207@id-126207.tinside.irccloud.com) (*.net *.split)
20:19:31 × APic quits (apic@apic.name) (*.net *.split)
20:19:31 × siers quits (~ij@user/ij) (*.net *.split)
20:19:31 × hugo quits (znc@verdigris.lysator.liu.se) (*.net *.split)
20:19:31 × mimmy quits (~mimmy@2604:a880:cad:d0::3e:1001) (*.net *.split)
20:19:39 Igloo joins (~ian@matrix.chaos.earth.li)
20:19:41 eL_Bart0 joins (eL_Bart0@dietunichtguten.org)
20:19:44 APic joins (apic@apic.name)
20:19:44 cods joins (~fred@82-65-232-44.subs.proxad.net)
20:19:44 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
20:19:47 codedmart joins (codedmart@2600:3c01::f03c:92ff:fefe:8511)
20:19:48 kaskal joins (~kaskal@2001:4bb8:2dc:7b0e:55ee:692c:e44d:a4b0)
20:19:52 dcoutts__ joins (~duncan@host86-163-164-210.range86-163.btcentralplus.com)
20:19:53 asm joins (~alexander@burner.asm89.io)
20:19:53 spider_ joins (~spider@vps-951ce37a.vps.ovh.ca)
20:19:56 <Profpatsch> Is there a way to see which HasField instances are defined?
20:19:58 Ranhir joins (~Ranhir@157.97.53.139)
20:19:59 kristjansson joins (sid126207@id-126207.tinside.irccloud.com)
20:19:59 spaced joins (uid572193@user/spaced)
20:20:01 nshepperd joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
20:20:02 lieven joins (~mal@ns2.wyrd.be)
20:20:05 earthy joins (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net)
20:20:05 stilgart joins (~Christoph@chezlefab.net)
20:20:08 ddb joins (~ddb@tilde.club)
20:20:08 <Profpatsch> I have a type newtype AtLeast (min :: Natural) num = AtLeast {unAtLeast :: num}
20:20:19 zachel joins (~zachel@user/zachel)
20:20:21 <Profpatsch> and `unAtLeast` seems to not have a HasField instance for some reason
20:20:23 markasoftware joins (~quassel@107.161.26.124)
20:20:51 hugo joins (znc@verdigris.lysator.liu.se)
20:20:59 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
20:21:01 stefan-_ joins (~cri@42dots.de)
20:21:05 mimmy joins (~mimmy@2604:a880:cad:d0::3e:1001)
20:21:05 siers joins (~ij@user/ij)
20:21:09 phileasfogg joins (~phileasfo@user/phileasfogg)
20:21:10 beteigeuze joins (~Thunderbi@89.187.168.47)
20:21:17 m5zs7k joins (aquares@web10.mydevil.net)
20:21:21 taeaad joins (~taeaad@user/taeaad)
20:21:33 DigitalKiwi joins (~kiwi@2604:a880:400:d0::1ca0:e001)
20:23:01 × Guest51 quits (~Guest51@205.175.106.104) (Quit: Client closed)
20:23:42 GoldsteinQ joins (~goldstein@goldstein.rs)
20:24:40 gnyeki joins (~gnyeki@li578-216.members.linode.com)
20:24:41 × gnyeki quits (~gnyeki@li578-216.members.linode.com) (Changing host)
20:24:41 gnyeki joins (~gnyeki@user/gnyeki)
20:24:46 <Profpatsch> I guess the phantom type make the instance not obvious?
20:25:39 Inoperable joins (~PLAYER_1@fancydata.science)
20:26:34 <Profpatsch> Ah, the trick is to remove the destructor and to manuall implement HasField
20:26:41 <Profpatsch> instance HasField "unAtLeast" (AtLeast min num) num where
20:26:43 <Profpatsch> getField (AtLeast num) = num
20:26:48 <Profpatsch> makes sens
20:26:49 <Profpatsch> e
20:27:02 <Profpatsch> thank you for rubber-ducking, #haskell :P
20:27:14 slac13256 joins (~slack1256@191.125.99.71)
20:29:51 × slack1256 quits (~slack1256@186.11.46.162) (Ping timeout: 272 seconds)
20:37:58 <sm> 🦆
20:38:27 <geekosaur> about all I could do was quack along, sadly
20:38:56 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
20:39:08 <Hecate> Profpatsch: heya :)
20:48:56 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
20:49:08 × mmhat quits (~mmh@p200300f1c7307610ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
20:53:55 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
20:54:11 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
20:57:54 <Profpatsch> Hecate: :)
20:59:35 danza joins (~francesco@151.82.219.40)
21:00:39 <[exa]> Megaparsec question: I'm parsing a stream of tokens that can be reconstructed into a line for pretty error printing via TraversableStream
21:00:52 <[exa]> ... how do I tell it the error position in a line?
21:01:31 × MajorBiscuit quits (~MajorBisc@mob-109-118-119-253.net.vodafone.it) (Ping timeout: 272 seconds)
21:02:00 <[exa]> in `reachOffset` I can only report 1] the line contents 2] a new PosState, which can't be "rewinded" to the error position because that could break potential next attempts for getting the contents of the line (I'd be missing the beginning)
21:02:11 mmhat joins (~mmh@2003:f1:c730:762d:ee08:6bff:fe09:5315)
21:03:37 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 260 seconds)
21:06:41 axeman joins (~quassel@2a02:8109:a380:78:967e:8a87:718a:1361)
21:06:43 <[exa]> (as in, the only way that displays to me right is that i keep the pstateOffset at the beginning of the line (to be able to reconstruct it) but move the sourcePos to a column that is not at that offset (possibly breaking sourcePos information for other stuff at that line)
21:07:43 slac13256 is now known as slack1256
21:07:52 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
21:11:01 × mixfix41 quits (~sdenynine@user/mixfix41) (Ping timeout: 272 seconds)
21:11:32 × yahb2 quits (~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection)
21:11:44 yahb2 joins (~yahb2@2a01:4f8:c0c:5c7b::2)
21:15:34 × yahb2 quits (~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection)
21:15:46 yahb2 joins (~yahb2@2a01:4f8:c0c:5c7b::2)
21:17:11 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
21:18:09 mvk joins (~mvk@2607:fea8:5ce3:8500::a80f)
21:18:27 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
21:18:48 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:23:55 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
21:24:34 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
21:24:42 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
21:30:01 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
21:30:17 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds)
21:33:07 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Read error: Connection reset by peer)
21:33:30 wonko joins (~wjc@user/wonko)
21:34:18 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:42:09 freeside joins (~mengwong@103.252.202.193)
21:43:26 gqplox joins (~textual@147.188.245.207)
21:48:15 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
21:56:11 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
21:57:25 zmt00 joins (~zmt00@user/zmt00)
21:57:58 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
22:00:37 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 240 seconds)
22:02:27 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
22:02:55 <gqplox> hello again
22:03:21 <gqplox> I'm struggling to write my previous function with foldr
22:03:35 <gqplox> recursiveConcat :: [[a]] -> [a]
22:03:36 <gqplox> recursiveConcat [] = []
22:03:36 <gqplox> recursiveConcat xxs = head xxs ++ recursiveConcat (tail xxs)
22:03:43 zmt00 joins (~zmt00@user/zmt00)
22:04:06 merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl)
22:05:58 <Rembane> gqplox: How far do you get before you get stuck?
22:06:57 <gqplox> recursiveConcat' xs = foldr (\x xs' -> head xs' ++ tail xs') [] xs
22:06:58 <gqplox> i did something like this so far ik its stupid
22:07:08 × acidjnk quits (~acidjnk@p54ad5adb.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
22:07:20 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:07:26 <Hecate> Hey Haskellers, I need people opinion on this: https://twitter.com/flora_haskell/status/1584665095627362305
22:09:27 <Rembane> gqplox: What happens to x?
22:09:32 × axeman quits (~quassel@2a02:8109:a380:78:967e:8a87:718a:1361) (Ping timeout: 272 seconds)
22:10:51 <monochrom> gqplox: My course notes http://www.cs.utoronto.ca/~trebla/CSCC24-2022-Summer/05-haskell-fold.html#foldr shows the general pattern.
22:11:42 <gqplox> thank you
22:11:54 <gqplox> oh oops
22:12:10 <gqplox> man Im so tired i think i should try again tomorrow :(
22:12:16 <gqplox> not going well
22:13:40 freeside joins (~mengwong@103.252.202.193)
22:13:51 <monochrom> Or in words, foldr (\x r -> x is already the head of the list, r is already the result of the recursive call)
22:14:17 × chomwitt quits (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Ping timeout: 276 seconds)
22:14:19 <monochrom> So it's illogical to try to use head or tail yourself on x or r.
22:15:01 <gqplox> So for recursiveConcat [[1,2,3], [4,5]] first x would be [1,2,3] and r is []?
22:15:38 <monochrom> first x is [1,2,3], "first" r is [4,5].
22:15:45 ckiorrrrrrrrrrrs joins (~ckiorrrrr@c-76-17-6-165.hsd1.ga.comcast.net)
22:16:27 <monochrom> r is [4,5] because the recursive call results in recursiveConcat [[4,5]] = [4,5].
22:16:40 <gqplox> so it would be something like
22:16:40 <gqplox> recursiveConcat' xs = foldr (\x r -> x ++ r) [] xs
22:16:49 <monochrom> Yes, that simple.
22:18:56 × mmhat quits (~mmh@2003:f1:c730:762d:ee08:6bff:fe09:5315) (Quit: WeeChat 3.7.1)
22:19:05 comerijn joins (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl)
22:20:06 <Rembane> darkside.se
22:20:14 <gqplox> great thank you :)
22:20:32 <Rembane> Sorry mischat
22:21:07 <monochrom> Yes I was wondering why you were advertising for darkside :)
22:21:33 <monochrom> I mean, let darkside advertise for themselves next time they come into the channel!
22:22:35 × merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
22:23:34 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
22:23:44 <gqplox> hmm for this function
22:24:05 <gqplox> recursiveReplicate :: Int -> a -> [a]
22:24:05 <gqplox> recursiveReplicate 0 _ = []
22:24:05 <gqplox> recursiveReplicate n x = x : recursiveReplicate (n - 1) x
22:24:42 <gqplox> it's taking an integer right so you can't make express with foldr?
22:25:09 <monochrom> It doesn't take an input list either, so foldr is completely irrelevant.
22:25:19 <gqplox> yes thats whay i mean
22:25:21 <gqplox> ok thank you
22:25:42 <monochrom> Instead, you could look into unfoldr. That's when you output a list.
22:25:54 <gqplox> wow wtf
22:25:56 <gqplox> mind blown
22:26:13 × Tuplanolla quits (~Tuplanoll@91-159-69-240.elisa-laajakaista.fi) (Quit: Leaving.)
22:26:30 <gqplox> wait is it actually in the prelude?
22:26:33 <gqplox> i cant see it
22:26:41 <monochrom> It is.
22:27:31 <gqplox> oh right i just ran ghci i needed to import Data.List
22:28:01 <geekosaur> @index unfoldr
22:28:01 <lambdabot> GHC.OldList, Data.List, Data.ByteString.Lazy.Char8, Data.ByteString.Lazy, Data.ByteString.Char8, Data.ByteString, Data.Sequence
22:28:06 <monochrom> Oh, it is not in Prelude. Sorry!
22:30:42 <gqplox> no worries
22:31:15 <gqplox> (!!!) :: [a] -> Int -> a
22:31:15 <gqplox> (!!!) (x : xs) 0 = x
22:31:15 <gqplox> (!!!) (x : xs) n = (!!!) xs (n - 1)
22:31:15 <gqplox> so can this be done with foldr?
22:31:27 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
22:32:48 <monochrom> The base case is not "recfun [] = ???", and the recursive case is not simply "recfun (x:xs) = foo x (recfun xs)". So no.
22:33:13 <gqplox> Alright cool
22:33:32 <gqplox> well thank you for the help im tired now so ill head off but really thx for the help and the notes ill look into it tomorrow
22:36:33 Axman6 joins (~Axman6@user/axman6)
22:37:14 polo is now known as Guest5366
22:37:57 × comerijn quits (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
22:37:57 × finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer)
22:38:33 × gqplox quits (~textual@147.188.245.207) (Quit: Textual IRC Client: www.textualapp.com)
22:41:26 × darkstardevx quits (~darkstard@50.126.124.156) (Read error: Connection reset by peer)
22:46:56 nate2 joins (~nate@98.45.169.16)
22:50:14 zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
22:50:41 merijn joins (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl)
22:51:37 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
22:52:06 talismanick joins (~talismani@76.133.152.122)
22:52:22 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
22:53:50 <talismanick> Are there options for <project>.cabal so I can declare an executable which automatically executes as if it had been called with +RTS -N?
22:54:31 <Axman6> you can add that to ghc-options
22:54:33 <Axman6> IIRC
22:54:34 <talismanick> `ghc-options: -threaded -rtsopts -w` didn't seem to enable multithreading - I still had to `cabal run foo -- +RTS -N`
22:54:41 <Axman6> check the cabal docs
22:54:46 <geekosaur> -with-rtsopts -N
22:54:46 <Axman6> and the4 ghc docs
22:54:51 <talismanick> I didn't see anything else in the Cabal docs, that I could see...
22:55:05 <talismanick> geekosaur: ah, that looks closer to what I'd expect
22:55:15 <talismanick> I looked up rtsopts in the cabal docs and didn't see much
22:55:17 × merijn quits (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
22:55:42 <talismanick> Or, not, what I searched was +RTS
22:55:44 <geekosaur> yeh, not's not a caba; option, it's a ghc link option so yo would use it with ghc-options in cabal
22:55:47 darkstardevx joins (~darkstard@50.126.124.156)
22:56:17 <talismanick> Nice, it works
22:56:47 × darkstardevx quits (~darkstard@50.126.124.156) (Remote host closed the connection)
22:57:12 darkstardevx joins (~darkstard@50.126.124.156)
22:58:06 zebrag joins (~chris@user/zebrag)
23:03:45 × mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 272 seconds)
23:06:17 × ubert quits (~Thunderbi@91.141.49.34.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
23:06:46 ubert joins (~Thunderbi@178.165.171.4.wireless.dyn.drei.com)
23:09:58 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
23:10:40 × Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 250 seconds)
23:11:07 × son0p quits (~ff@181.136.122.143) (Killed (NickServ (GHOST command used by son0p-)))
23:13:20 son0p joins (~ff@181.136.122.143)
23:13:31 × michalz quits (~michalz@185.246.207.193) (Remote host closed the connection)
23:18:38 Kaipei joins (~Kaiepi@108.175.84.104)
23:27:47 × zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
23:38:35 j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
23:42:59 × danza quits (~francesco@151.82.219.40) (Read error: Connection reset by peer)
23:59:58 danza joins (~francesco@ge-19-125-62.service.infuturo.it)

All times are in UTC on 2022-10-24.