2022/10/24

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