2020/11/02

2020-11-02 00:03:25 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-11-02 00:03:41 +0100totte(~totte@chakra/totte) (Ping timeout: 256 seconds)
2020-11-02 00:03:49 +0100LKoen(~LKoen@127.251.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-02 00:03:49 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 00:06:04 +0100howdoi(uid224@gateway/web/irccloud.com/x-czxukgvxykkjyknw) (Quit: Connection closed for inactivity)
2020-11-02 00:06:37 +0100sawebb_(~sawebb@75.115.195.184) (Ping timeout: 258 seconds)
2020-11-02 00:07:53 +0100 <hoppfull> I have a Q MyType. Is there no way of getting MyType out? Am I missing something here? Am I supposed to coerce it or something? runQ only seems to evaluate the expression at runtime.
2020-11-02 00:07:56 +0100totte(~totte@chakra/totte)
2020-11-02 00:08:23 +0100 <dolio> Q is a monad, right?
2020-11-02 00:09:35 +0100 <hoppfull> Yeah
2020-11-02 00:09:51 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-11-02 00:09:57 +0100 <hoppfull> So what's the point of template haskell?
2020-11-02 00:10:17 +0100 <dolio> To generate Haskell code programatically at compile time.
2020-11-02 00:10:17 +0100 <hoppfull> I got the impression I could read files and stuff on compile time with runIO
2020-11-02 00:13:48 +0100Guest_70(0253f68a@bl22-246-138.dsl.telepac.pt)
2020-11-02 00:14:01 +0100ski(~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 264 seconds)
2020-11-02 00:15:39 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2020-11-02 00:16:04 +0100aarvar(~foewfoiew@50.35.43.33) (Ping timeout: 240 seconds)
2020-11-02 00:16:25 +0100Guest_70(0253f68a@bl22-246-138.dsl.telepac.pt) (Remote host closed the connection)
2020-11-02 00:16:50 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:44d9:76d7:3eb0:9793) (Ping timeout: 264 seconds)
2020-11-02 00:17:23 +0100 <cheater> that's not what runIO is for
2020-11-02 00:17:25 +0100 <cheater> :t runIO
2020-11-02 00:17:27 +0100 <lambdabot> error: Variable not in scope: runIO
2020-11-02 00:17:27 +0100 <dolio> Well, in the error message you mentioned above, it wasn't even complaining about the Q part, it was complaining that the things inside the Q didn't match.
2020-11-02 00:19:03 +0100hoppfull(55e07432@c-3274e055.19-9-64736c10.bbcust.telenor.se) (Remote host closed the connection)
2020-11-02 00:19:13 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-whgkwnxufenzozzn) (Quit: Connection closed for inactivity)
2020-11-02 00:19:14 +0100ski(~ski@nc-2504-30.studat.chalmers.se)
2020-11-02 00:21:26 +0100 <dolio> Ergo, you don't need to 'get something out' of Q, you need to use it like any other monad.
2020-11-02 00:22:24 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:955d:b3db:6b4c:c2ab)
2020-11-02 00:22:30 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-arvrrpvtmfjsqvdb) (Quit: Connection closed for inactivity)
2020-11-02 00:23:49 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-02 00:24:00 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 00:24:19 +0100ski(~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 260 seconds)
2020-11-02 00:24:27 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds)
2020-11-02 00:24:49 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 2.9)
2020-11-02 00:24:55 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-02 00:25:58 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
2020-11-02 00:26:15 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-11-02 00:26:39 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 00:26:40 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer)
2020-11-02 00:28:24 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 00:28:42 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-02 00:31:42 +0100Tops21(~Tobias@dyndsl-095-033-023-063.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2020-11-02 00:32:52 +0100son0p(~son0p@181.136.122.143) (Remote host closed the connection)
2020-11-02 00:34:03 +0100ski(~ski@nc-2504-30.studat.chalmers.se)
2020-11-02 00:35:45 +0100unihernandez22(~Unai@168.197.200.20)
2020-11-02 00:36:54 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1)
2020-11-02 00:41:52 +0100argent0(~argent0@168.227.96.4)
2020-11-02 00:42:10 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 00:43:09 +0100 <unihernandez22> Hi
2020-11-02 00:44:00 +0100hackageGPipe-GLFW 1.4.1.4 - GLFW OpenGL context creation for GPipe https://hackage.haskell.org/package/GPipe-GLFW-1.4.1.4 (plredmond)
2020-11-02 00:44:01 +0100unihernandez22(~Unai@168.197.200.20) (Quit: Leaving)
2020-11-02 00:44:44 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-kktozexnvkkmtbir)
2020-11-02 00:47:06 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-02 00:48:01 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 258 seconds)
2020-11-02 00:49:46 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 265 seconds)
2020-11-02 00:51:00 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-02 00:51:17 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-11-02 00:51:18 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-02 00:51:47 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-02 00:52:06 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-02 00:52:35 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-02 00:52:47 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker)
2020-11-02 00:54:44 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-11-02 00:58:56 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 00:59:51 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-02 01:00:02 +0100strattog(~strattog@154.13.1.56) ()
2020-11-02 01:00:07 +0100atk(~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.)
2020-11-02 01:00:32 +0100atk(~Arch-TK@erebus.the-tk.com)
2020-11-02 01:02:17 +0100conal(~conal@64.71.133.70)
2020-11-02 01:02:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 01:02:46 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-02 01:04:05 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1)
2020-11-02 01:08:02 +0100sajith(~sajith@fsf/member/nonzen)
2020-11-02 01:08:37 +0100sajith_(~sajith@fsf/member/nonzen)
2020-11-02 01:09:21 +0100Gurkenglas_(Gurkenglas@gateway/vpn/protonvpn/gurkenglas)
2020-11-02 01:10:05 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 268 seconds)
2020-11-02 01:12:52 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds)
2020-11-02 01:14:04 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 240 seconds)
2020-11-02 01:14:38 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-02 01:17:52 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-02 01:19:36 +0100nckx(~nckx@tobias.gr) (Quit: Updating my Guix System — https://guix.gnu.org)
2020-11-02 01:19:52 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 01:20:19 +0100conal(~conal@198.8.81.68)
2020-11-02 01:20:42 +0100sam___(~sam@75.116.205.77.rev.sfr.net)
2020-11-02 01:23:13 +0100nckx(~nckx@tobias.gr)
2020-11-02 01:24:31 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-02 01:24:52 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-02 01:28:29 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 01:28:47 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 260 seconds)
2020-11-02 01:31:38 +0100aarvar(~foewfoiew@50.35.43.33)
2020-11-02 01:32:14 +0100fendor_(~fendor@91.141.1.122.wireless.dyn.drei.com)
2020-11-02 01:32:31 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-02 01:34:08 +0100argent0(~argent0@168.227.96.4) (Ping timeout: 268 seconds)
2020-11-02 01:35:16 +0100fendor(~fendor@91.141.0.119.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2020-11-02 01:36:13 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c)
2020-11-02 01:37:03 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Quit: leaving)
2020-11-02 01:37:22 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com)
2020-11-02 01:39:34 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 01:39:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 01:41:04 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1)
2020-11-02 01:41:06 +0100xerox_(~xerox@unaffiliated/xerox)
2020-11-02 01:41:43 +0100bendo(~bendo@130.61.122.121) (Ping timeout: 256 seconds)
2020-11-02 01:42:28 +0100Tario(~Tario@200.119.185.187) (Ping timeout: 260 seconds)
2020-11-02 01:42:43 +0100bendo(~bendo@130.61.122.121)
2020-11-02 01:42:52 +0100Chi1thangoo(~Chi1thang@87.112.60.168) (Ping timeout: 272 seconds)
2020-11-02 01:43:10 +0100Tario(~Tario@201.191.91.236)
2020-11-02 01:44:14 +0100plutoniix(~q@175.176.222.7)
2020-11-02 01:44:26 +0100christo(~chris@81.96.113.213)
2020-11-02 01:44:43 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 246 seconds)
2020-11-02 01:45:32 +0100machinedgod(~machinedg@207.253.244.210) (Ping timeout: 256 seconds)
2020-11-02 01:46:22 +0100pera(~pera@unaffiliated/pera)
2020-11-02 01:50:49 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-qmwibrdpzphrklso) (Quit: Connection closed for inactivity)
2020-11-02 01:51:42 +0100 <Raito_Bezarius> can I unpack Maybe [a] into [a] using prelude?
2020-11-02 01:51:50 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 01:51:50 +0100 <Raito_Bezarius> saying that None → [] and Some l → l
2020-11-02 01:51:57 +0100Nachtgespenst(~user@unaffiliated/siracusa)
2020-11-02 01:52:08 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 01:52:17 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-02 01:52:20 +0100 <c_wraith> why Prelude in particular?
2020-11-02 01:52:32 +0100 <Raito_Bezarius> hm, rather base libraries then
2020-11-02 01:53:01 +0100 <c_wraith> :t fromMaybe []
2020-11-02 01:53:03 +0100 <lambdabot> Maybe [a] -> [a]
2020-11-02 01:53:07 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-02 01:53:09 +0100 <Raito_Bezarius> thanks, c_wraith !
2020-11-02 01:53:54 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-02 01:54:09 +0100christo(~chris@81.96.113.213)
2020-11-02 01:54:38 +0100argent0(~argent0@168.227.96.4)
2020-11-02 01:55:14 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6)
2020-11-02 01:55:33 +0100Guest95559(~ccallahan@139.28.218.148)
2020-11-02 01:55:57 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-11-02 01:56:55 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-02 01:58:35 +0100wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-02 01:59:06 +0100nerdypepper(nerdypeppe@152.67.160.69) (Quit: bye)
2020-11-02 01:59:18 +0100nerdypepper(nerdypeppe@152.67.160.69)
2020-11-02 01:59:25 +0100DavidEichmann(~david@43.240.198.146.dyn.plus.net) (Ping timeout: 246 seconds)
2020-11-02 01:59:59 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-11-02 02:00:38 +0100sam___(~sam@75.116.205.77.rev.sfr.net) (Ping timeout: 264 seconds)
2020-11-02 02:01:06 +0100Deide(~Deide@217.155.19.23)
2020-11-02 02:02:19 +0100conal(~conal@198.8.81.68) (Quit: Computer has gone to sleep.)
2020-11-02 02:02:37 +0100carlomagno(~cararell@148.87.23.11)
2020-11-02 02:03:14 +0100wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2020-11-02 02:05:01 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2020-11-02 02:06:31 +0100m0rphism(~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds)
2020-11-02 02:08:08 +0100 <koz_> foldMap (: []) works too I think?
2020-11-02 02:09:37 +0100DigitalKiWickedDigitalKiwi
2020-11-02 02:10:47 +0100aarvar(~foewfoiew@50.35.43.33) (Ping timeout: 260 seconds)
2020-11-02 02:10:50 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 264 seconds)
2020-11-02 02:11:10 +0100 <MarcelineVQ> that'd be Maybe a -> [a] but foldMap id should be fine
2020-11-02 02:13:28 +0100 <MarcelineVQ> > fold (Just [3]) -- I like to write fold instead of foldMap id tho
2020-11-02 02:13:31 +0100 <lambdabot> [3]
2020-11-02 02:13:53 +0100conal(~conal@198.8.81.68)
2020-11-02 02:14:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-02 02:14:23 +0100 <koz_> MarcelineVQ: You could do 'foldMap pure' as well.
2020-11-02 02:14:28 +0100 <MarcelineVQ> 'just prelude' would be maybe [] id tho
2020-11-02 02:14:33 +0100 <koz_> But fold is the slickest.
2020-11-02 02:14:42 +0100 <koz_> 'foldMap id' is Prelude-only-able.
2020-11-02 02:15:16 +0100 <MarcelineVQ> watch this shit
2020-11-02 02:15:22 +0100 <MarcelineVQ> > concat (Just [3])
2020-11-02 02:15:24 +0100 <lambdabot> [3]
2020-11-02 02:16:04 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Ping timeout: 240 seconds)
2020-11-02 02:16:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-02 02:17:35 +0100 <koz_> MarcelineVQ: Ooooooo
2020-11-02 02:17:39 +0100 <koz_> SpoooOOOky
2020-11-02 02:17:50 +0100LambdaScientist(~Android@24.42.199.176)
2020-11-02 02:18:18 +0100 <hololeap> was concat always Foldable t => t [a] -> [a]?
2020-11-02 02:19:50 +0100 <davean> no, foldable didn't always exist, why?
2020-11-02 02:21:44 +0100aarvar(~foewfoiew@50.35.43.33)
2020-11-02 02:22:14 +0100ericsagn1(~ericsagne@2405:6580:0:5100:24ed:9b41:b671:d88b) (Ping timeout: 268 seconds)
2020-11-02 02:22:38 +0100Lord_of_Life_(~Lord@46.217.223.45)
2020-11-02 02:24:43 +0100Lord_of_Life(~Lord@46.217.216.248) (Ping timeout: 260 seconds)
2020-11-02 02:25:29 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 02:29:44 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 02:30:15 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 02:30:19 +0100christo(~chris@81.96.113.213)
2020-11-02 02:31:43 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-11-02 02:31:59 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 02:32:13 +0100christo(~chris@81.96.113.213)
2020-11-02 02:33:49 +0100ericsagn1(~ericsagne@2405:6580:0:5100:3b3a:dfa6:d69e:5cd8)
2020-11-02 02:34:04 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1)
2020-11-02 02:35:33 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
2020-11-02 02:38:20 +0100urodna(~urodna@unaffiliated/urodna) (Read error: Connection reset by peer)
2020-11-02 02:42:06 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-02 02:42:07 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 246 seconds)
2020-11-02 02:42:10 +0100 <edwardk> clearly it should be redefined to 'foldMap toList', as the toList definition for list is the identify function, and then it can be (Foldable f, Foldable g) => f (g a) -> [a]
2020-11-02 02:42:40 +0100 <edwardk> missed opportunity
2020-11-02 02:43:14 +0100jedws(~jedws@101.184.150.81)
2020-11-02 02:43:22 +0100 <edwardk> we could kill so many catMaybes with that
2020-11-02 02:44:00 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-11-02 02:46:12 +0100aarvar(~foewfoiew@50.35.43.33) (Ping timeout: 272 seconds)
2020-11-02 02:46:40 +0100 <dolio> In Haskell 1.4 it was `MonadPlus m => [m a] -> m a`
2020-11-02 02:48:03 +0100dmwit(~dmwit@pool-108-18-228-100.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-11-02 02:49:45 +0100dmwit(~dmwit@pool-108-28-166-212.washdc.fios.verizon.net)
2020-11-02 02:53:40 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9)
2020-11-02 02:57:30 +0100hackagegargoyle 0.1.1.0 - Automatically spin up and spin down local daemons https://hackage.haskell.org/package/gargoyle-0.1.1.0 (abrar)
2020-11-02 02:58:31 +0100hackagegargoyle-postgresql-nix 0.3.0.0, gargoyle-postgresql 0.2.0.0 (abrar): https://qbin.io/joint-mixer-6yez
2020-11-02 02:59:12 +0100kjak(~kjak@pool-173-73-38-16.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-02 02:59:30 +0100hackagegargoyle-postgresql-connect 0.1.0.0 - Connect to gargoyle-managed postgresql instances https://hackage.haskell.org/package/gargoyle-postgresql-connect-0.1.0.0 (abrar)
2020-11-02 03:03:45 +0100 <hololeap> i just remembered it being [[a]] -> [a], but maybe this was a simplification presented to beginners
2020-11-02 03:05:35 +0100 <davean> ew, ugly, who uses lists? :-p
2020-11-02 03:06:09 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 03:08:01 +0100leah2(~leah@vuxu.org) (Ping timeout: 264 seconds)
2020-11-02 03:08:49 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-11-02 03:09:04 +0100alp(~alp@2a01:e0a:58b:4920:e0bd:5b09:72db:411d) (Ping timeout: 240 seconds)
2020-11-02 03:10:16 +0100 <dsal> Is this #lisp?
2020-11-02 03:10:44 +0100 <davean> Apparently.
2020-11-02 03:10:58 +0100 <davean> /part
2020-11-02 03:10:59 +0100 <nshepperd> hee, foldMap toList is a nice trick (but wait, is it efficient? maybe it should be toList . foldMap toDiffList)
2020-11-02 03:11:04 +0100 <davean> /join #haskell
2020-11-02 03:14:58 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-02 03:17:44 +0100akad_(~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 240 seconds)
2020-11-02 03:18:09 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1)
2020-11-02 03:18:22 +0100ronbrz(~ronbrz@207.229.174.134)
2020-11-02 03:19:53 +0100jbox(~atlas@unaffiliated/jbox)
2020-11-02 03:20:17 +0100ech(~user@gateway/tor-sasl/ech) (Remote host closed the connection)
2020-11-02 03:22:16 +0100bennofs1(~benno@dslb-094-222-054-143.094.222.pools.vodafone-ip.de) (Quit: WeeChat 2.9)
2020-11-02 03:22:50 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas)
2020-11-02 03:23:08 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-11-02 03:23:44 +0100 <Raito_Bezarius> Dis there a way to easily debug when megaparsec seems to do an infinite loop?
2020-11-02 03:23:46 +0100 <Raito_Bezarius> -d
2020-11-02 03:23:57 +0100 <Raito_Bezarius> I tried to put dbg but it's quite tedious as I have many parsers
2020-11-02 03:26:05 +0100Gurkenglas_(Gurkenglas@gateway/vpn/protonvpn/gurkenglas) (Ping timeout: 240 seconds)
2020-11-02 03:26:48 +0100 <dolio> It was [[a]] -> [a] in Haskell 98 and 2010, I think.
2020-11-02 03:27:23 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c)
2020-11-02 03:30:34 +0100 <sm[m]> Raito_Bezarius: add a bunch of dbg, trace, or just an error call. Reload in ghci to see changes faster
2020-11-02 03:30:58 +0100 <Raito_Bezarius> sm[m]: unfortunately adding a bunch didn't give me anything
2020-11-02 03:31:11 +0100 <Raito_Bezarius> I think it was in the internals of makeExprTable
2020-11-02 03:31:14 +0100 <Raito_Bezarius> or something
2020-11-02 03:31:21 +0100 <sm[m]> move them around until you narrow down where it gets stuck
2020-11-02 03:31:28 +0100stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2020-11-02 03:31:32 +0100 <sm[m]> or, comment out code until it stops doing that
2020-11-02 03:31:46 +0100stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
2020-11-02 03:31:47 +0100 <Raito_Bezarius> I was wondering of a method which can "enable" some verbose mode in megaparsec in general
2020-11-02 03:32:04 +0100 <Raito_Bezarius> this method of moving out things does not seem to scale well with a lot of parsers alas
2020-11-02 03:32:16 +0100 <Raito_Bezarius> but maybe this is a proficiency thing
2020-11-02 03:32:29 +0100 <Raito_Bezarius> (and I'm already using ghci+parseTest+reload)
2020-11-02 03:32:41 +0100 <hololeap> \
2020-11-02 03:33:01 +0100 <hololeap> dolio: good to know. i remember seeing that in a tutorial somewhere.
2020-11-02 03:33:18 +0100jbox(~atlas@unaffiliated/jbox) ("WeeChat 2.9")
2020-11-02 03:34:03 +0100 <sm[m]> in hledger, I do it in two ways. 1, include debug/trace statements in most parsers, which activates only with --debug=N. 2, insert such statements temporarily where needed, for quick troubleshooting in GHCI
2020-11-02 03:35:03 +0100 <hololeap> Raito_Bezarius: just found this https://hackage.haskell.org/package/megaparsec-9.0.1/docs/Text-Megaparsec-Debug.html
2020-11-02 03:35:39 +0100 <hololeap> from here https://hoogle.haskell.org/?hoogle=debug%20package%3Amegaparsec
2020-11-02 03:35:42 +0100 <sm[m]> Raito_Bezarius: 1 (permanent, optional tracing) is handy to see the big picture, and for troubleshooting user installations. 2 (temporary tracing) is good for targetted debugging
2020-11-02 03:35:49 +0100inkbottle(~inkbottle@aaubervilliers-654-1-1-110.w83-200.abo.wanadoo.fr)
2020-11-02 03:36:13 +0100 <Raito_Bezarius> hololeap: this is the dbg I spoke about afaik
2020-11-02 03:36:14 +0100jespada(~jespada@90.254.243.98) (Ping timeout: 272 seconds)
2020-11-02 03:36:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-111-120.w86-198.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2020-11-02 03:36:46 +0100 <Raito_Bezarius> if a dbgAll would exist and would recursively set dbg to all subparsers that'd be nice
2020-11-02 03:36:51 +0100 <Raito_Bezarius> but I suppose it'd create too much verbose output
2020-11-02 03:37:07 +0100 <sm[m]> yes that would be nice, and yes would need to be optional
2020-11-02 03:37:22 +0100 <Raito_Bezarius> I agree that would have to be optional
2020-11-02 03:38:09 +0100 <sm[m]> you might need a bit more practice, it shouldn't take too many traces & ghci reloads to narrow down the problem
2020-11-02 03:38:20 +0100jespada(~jespada@90.254.245.49)
2020-11-02 03:38:23 +0100 <Raito_Bezarius> in fact, some minutes after I realized what was going on
2020-11-02 03:38:32 +0100 <sm[m]> heh
2020-11-02 03:38:32 +0100 <Raito_Bezarius> but I admit that with too much tiredness in the blood, it's quite hard
2020-11-02 03:38:42 +0100 <Raito_Bezarius> so I was wondering of a better way :p
2020-11-02 03:38:49 +0100 <Raito_Bezarius> thanks for the advice sm[m] though :)
2020-11-02 03:39:17 +0100 <sm[m]> I think both ways have their uses.. and stepping in a debugger would also be a nice option, not so easy for us alas
2020-11-02 03:40:33 +0100acidjnk_new(~acidjnk@p200300d0c7226044298aa97eef668aef.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 03:40:44 +0100toorevitimirp(~tooreviti@117.182.183.132)
2020-11-02 03:42:44 +0100machinedgod(~machinedg@207.253.244.210) (Ping timeout: 240 seconds)
2020-11-02 03:42:58 +0100texasmynsted(~texasmyns@212.102.45.115) (Remote host closed the connection)
2020-11-02 03:43:55 +0100texasmynsted(~texasmyns@212.102.45.115)
2020-11-02 03:44:01 +0100 <Raito_Bezarius> is there a way to create record using Applicative syntax?
2020-11-02 03:45:26 +0100 <gobbleguy> Raito_Bezarius: this is doing that: https://github.com/glguy/irc-core/blob/v2/src/Client/Configuration/ServerSettings.hs#L421-L430
2020-11-02 03:45:49 +0100 <gobbleguy> with the ApplicativeDo and RecordWildCards extensions
2020-11-02 03:46:16 +0100 <Raito_Bezarius> thanks gobbleguy !
2020-11-02 03:46:38 +0100 <sm[m]> and you know about doing it with function syntax I guess: Foo field1val field2val ...
2020-11-02 03:46:48 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 03:47:00 +0100 <Raito_Bezarius> oh right, sm[m]
2020-11-02 03:47:04 +0100 <Raito_Bezarius> nice :-)
2020-11-02 03:47:28 +0100 <sm[m]> but RecordWildCards requires less maintenance as your record changes. Might also be more error-prone/less-readable for some
2020-11-02 03:48:34 +0100texasmynsted(~texasmyns@212.102.45.115) (Ping timeout: 258 seconds)
2020-11-02 03:48:38 +0100lemmih(~lemmih@2406:3003:2072:44:51b:ea3d:d135:394c) (Ping timeout: 264 seconds)
2020-11-02 03:50:29 +0100ddellacosta(~dd@86.106.121.168) (Ping timeout: 258 seconds)
2020-11-02 03:51:01 +0100sm[m]loves RecordWildCards
2020-11-02 03:51:23 +0100lemmih(~lemmih@2406:3003:2072:44:2c90:c5a8:23d6:f0a8)
2020-11-02 03:53:24 +0100drbean(~drbean@TC210-63-209-71.static.apol.com.tw)
2020-11-02 03:57:44 +0100xff0x(~fox@2001:1a81:5341:f200:c657:86c0:ac7a:d369) (Ping timeout: 240 seconds)
2020-11-02 03:58:04 +0100 <xsperry> what would make it more error-prone?
2020-11-02 03:58:17 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-02 03:59:12 +0100akad_(~akad@109107030050.radomsko.vectranet.pl)
2020-11-02 03:59:44 +0100 <dsal> NamedFieldPuns
2020-11-02 03:59:45 +0100xff0x(~fox@2001:1a81:537c:3e00:a716:2819:5bdd:ec6f)
2020-11-02 04:00:02 +0100Guest95559(~ccallahan@139.28.218.148) ()
2020-11-02 04:03:05 +0100 <dsal> Er, that'd make it less error prone.
2020-11-02 04:03:57 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 260 seconds)
2020-11-02 04:03:59 +0100darjeeling_(~darjeelin@122.245.121.118) (Ping timeout: 268 seconds)
2020-11-02 04:04:50 +0100juri_(~juri@178.63.35.222) (Ping timeout: 264 seconds)
2020-11-02 04:06:38 +0100meowphius(~meowphius@pool-96-237-166-172.bstnma.fios.verizon.net) (Ping timeout: 272 seconds)
2020-11-02 04:06:54 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-02 04:07:08 +0100 <dsal> gobbleguy: You can reduce the redundancy of the `fromMaybe "" <$> optSection'` there
2020-11-02 04:07:54 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 272 seconds)
2020-11-02 04:07:55 +0100 <dsal> Actually, more than that.
2020-11-02 04:08:51 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (barjavel.freenode.net (Nickname regained by services)))
2020-11-02 04:09:00 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-11-02 04:10:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 04:12:03 +0100machinedgod(~machinedg@207.253.244.210) (Ping timeout: 260 seconds)
2020-11-02 04:15:54 +0100darjeeling_(~darjeelin@115.215.40.228)
2020-11-02 04:20:10 +0100dmwit(~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-02 04:21:54 +0100dmwit(~dmwit@pool-108-28-166-212.washdc.fios.verizon.net)
2020-11-02 04:22:04 +0100guest112(~user@49.5.6.87)
2020-11-02 04:23:50 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-02 04:24:56 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-02 04:25:12 +0100nerdypepper(nerdypeppe@152.67.160.69) (Quit: bye)
2020-11-02 04:26:30 +0100nerdypepper(nerdypeppe@152.67.160.69)
2020-11-02 04:26:45 +0100SqueakyBeaver(4a823731@cpe-74-130-55-49.kya.res.rr.com)
2020-11-02 04:28:25 +0100theDon(~td@94.134.91.196) (Ping timeout: 240 seconds)
2020-11-02 04:29:16 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds)
2020-11-02 04:30:37 +0100theDon(~td@muedsl-82-207-238-028.citykom.de)
2020-11-02 04:32:29 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
2020-11-02 04:33:12 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-02 04:33:13 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 264 seconds)
2020-11-02 04:34:00 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c)
2020-11-02 04:36:30 +0100hackagemacrm 1.0.0.5 - Alternative rm command for macOS that remove files/dirs to the system trash https://hackage.haskell.org/package/macrm-1.0.0.5 (satosystems)
2020-11-02 04:44:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-02 04:44:58 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 04:45:19 +0100christo(~chris@81.96.113.213)
2020-11-02 04:47:58 +0100 <dsal> Woah, that's a lot of code.
2020-11-02 04:49:31 +0100 <MarcelineVQ> system $ printf "mv %s %s" file dest
2020-11-02 04:49:57 +0100 <dsal> https://github.com/dustin/trash/blob/master/trash.m <-- I wrote this in objc using the native support for trashing.
2020-11-02 04:50:16 +0100 <MarcelineVQ> kernel support for trashring?
2020-11-02 04:51:47 +0100 <dsal> The ~/.Trash thing is kind of special and the behavior of dragging files in is a little magic. The second time you drop a file in with the same name, e.g., you get some anti-collision stuff and such.
2020-11-02 05:03:52 +0100akad_(~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 256 seconds)
2020-11-02 05:04:46 +0100falafel(~falafel@24-223-105-148.static.cablene.com)
2020-11-02 05:04:54 +0100petersen(~petersen@redhat/juhp)
2020-11-02 05:05:10 +0100jedws(~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 05:08:26 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 264 seconds)
2020-11-02 05:10:05 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
2020-11-02 05:17:00 +0100johnw(~johnw@haskell/developer/johnw) (Quit: ZNC - http://znc.in)
2020-11-02 05:23:24 +0100SqueakyBeaver(4a823731@cpe-74-130-55-49.kya.res.rr.com) (Ping timeout: 245 seconds)
2020-11-02 05:27:04 +0100jedws(~jedws@101.184.150.81)
2020-11-02 05:41:36 +0100johnw(~johnw@haskell/developer/johnw)
2020-11-02 05:42:35 +0100dyeplexer(~lol@unaffiliated/terpin)
2020-11-02 05:43:37 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
2020-11-02 05:43:46 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-02 05:44:06 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-02 05:52:22 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-11-02 05:54:03 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-02 05:54:58 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-02 05:55:17 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-02 05:55:25 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 05:56:04 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6) (Remote host closed the connection)
2020-11-02 06:04:26 +0100Tario(~Tario@201.191.91.236) (Ping timeout: 272 seconds)
2020-11-02 06:05:44 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Quit: sh9)
2020-11-02 06:08:26 +0100Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 264 seconds)
2020-11-02 06:08:37 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-11-02 06:08:37 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-11-02 06:08:37 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-02 06:10:32 +0100Tario(~Tario@200.119.185.133)
2020-11-02 06:13:26 +0100yinfeng(~yinfeng@2001:250:5002:8100::1:851e) (Quit: WeeChat 2.9)
2020-11-02 06:14:05 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 06:17:44 +0100conal(~conal@198.8.81.68) (Ping timeout: 272 seconds)
2020-11-02 06:19:02 +0100 <jackdk> Where do the names `Star` and `Costar` come from? (The ones that appear in `profunctors`)
2020-11-02 06:21:30 +0100xff0x(~fox@2001:1a81:537c:3e00:a716:2819:5bdd:ec6f) (Ping timeout: 268 seconds)
2020-11-02 06:21:57 +0100xff0x(~fox@2001:1a81:537c:3e00:c8f2:34d9:3609:f336)
2020-11-02 06:24:27 +0100conal(~conal@198.8.81.68)
2020-11-02 06:24:30 +0100christo(~chris@81.96.113.213)
2020-11-02 06:25:09 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c)
2020-11-02 06:26:18 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 06:26:53 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 06:31:04 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 06:31:14 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 06:31:34 +0100yinfeng(~yinfeng@2001:250:5002:8100::1:851e)
2020-11-02 06:31:39 +0100 <int-e> jackdk: I guess a combination of notation, namely F^*, and an affinity for movie references.
2020-11-02 06:32:59 +0100reset(~reset@84.39.116.180)
2020-11-02 06:33:29 +0100 <int-e> http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html called them UpStar for F^* and DownStar for F_*
2020-11-02 06:38:05 +0100LambdaScientist(~Android@24.42.199.176) (Quit: -a- Connection Timed Out)
2020-11-02 06:38:40 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9)
2020-11-02 06:39:24 +0100yinfeng(~yinfeng@2001:250:5002:8100::1:851e) (Quit: WeeChat 2.9)
2020-11-02 06:40:49 +0100is_null(~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 246 seconds)
2020-11-02 06:40:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 06:41:15 +0100yinfeng(~yinfeng@2001:250:5002:8100::1:851e)
2020-11-02 06:41:38 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 06:41:42 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 06:42:06 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 06:42:10 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 06:42:23 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 06:42:38 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 06:42:42 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 06:43:08 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 06:43:13 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 06:43:23 +0100argent0(~argent0@168.227.96.4) (Remote host closed the connection)
2020-11-02 06:43:25 +0100day_(~Unknown@unaffiliated/day)
2020-11-02 06:43:39 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 06:43:44 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 06:44:08 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-02 06:46:24 +0100day(~Unknown@unaffiliated/day) (Ping timeout: 240 seconds)
2020-11-02 06:46:24 +0100day_day
2020-11-02 06:47:20 +0100 <jackdk> so the Costar thing is a pun, like Biff/Tannen?
2020-11-02 06:49:28 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 06:49:31 +0100is_null(~jpic@pdpc/supporter/professional/is-null)
2020-11-02 06:51:24 +0100 <int-e> jackdk: well, maybe :)
2020-11-02 06:51:38 +0100 <int-e> but there is also an actual duality
2020-11-02 06:57:00 +0100knupfer(~Thunderbi@87.123.206.240)
2020-11-02 06:59:06 +0100mokulus_(~mat@176.111.230.96) (Read error: Connection reset by peer)
2020-11-02 06:59:41 +0100mokulus_(~mat@176.111.230.96)
2020-11-02 06:59:44 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 268 seconds)
2020-11-02 07:00:01 +0100reset(~reset@84.39.116.180) ()
2020-11-02 07:00:32 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 07:01:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2020-11-02 07:06:02 +0100knupfer(~Thunderbi@87.123.206.240) (Ping timeout: 264 seconds)
2020-11-02 07:11:02 +0100coot(~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl)
2020-11-02 07:11:09 +0100 <danso> i see this pattern often in my code where i end up in many nested `case` expressions
2020-11-02 07:11:13 +0100 <danso> https://github.com/ninedotnine/soucc/blob/main/src/TypeChecker/TypeChecker.hs#L61-L75
2020-11-02 07:11:43 +0100 <danso> usually `do` notation makes these go away, but here it only works for the outer monad (State)
2020-11-02 07:11:51 +0100 <danso> and i would like it to work with Either as well
2020-11-02 07:12:09 +0100 <danso> i'm sure i've read about the cure for this problem on a blog somewhere, but i don't know how to find it now. help?
2020-11-02 07:12:37 +0100knupfer(~Thunderbi@200116b82c45b30000b473fffe3f50e6.dip.versatel-1u1.de)
2020-11-02 07:12:37 +0100knupfer(~Thunderbi@200116b82c45b30000b473fffe3f50e6.dip.versatel-1u1.de) (Client Quit)
2020-11-02 07:12:52 +0100knupfer(~Thunderbi@87.123.206.240)
2020-11-02 07:13:24 +0100 <jackdk> danso: sounds like a job for monad transformers, specifically ExceptT
2020-11-02 07:13:58 +0100 <jackdk> if I understand you correctly, you can temporarily work with a transformer, you don't have to use it all over your program
2020-11-02 07:14:35 +0100 <jackdk> `run_globals defns = runExceptT $ do ...` etc
2020-11-02 07:15:31 +0100 <danso> thanks, i will start reading
2020-11-02 07:15:48 +0100 <danso> this occurs in many places in my program; maybe it would be appropriate to use ExceptT throughout
2020-11-02 07:16:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-02 07:17:18 +0100knupfer(~Thunderbi@87.123.206.240) (Ping timeout: 260 seconds)
2020-11-02 07:19:39 +0100is_null(~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 260 seconds)
2020-11-02 07:20:24 +0100dorkside9(~tdbgamer@208.190.197.222)
2020-11-02 07:21:14 +0100juri_(~juri@178.63.35.222)
2020-11-02 07:21:19 +0100dorkside(~tdbgamer@208.190.197.222) (Ping timeout: 268 seconds)
2020-11-02 07:21:19 +0100dorkside9dorkside
2020-11-02 07:22:50 +0100falafel(~falafel@24-223-105-148.static.cablene.com) (Ping timeout: 264 seconds)
2020-11-02 07:24:45 +0100ski(~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 240 seconds)
2020-11-02 07:25:44 +0100ski(~ski@nc-2504-30.studat.chalmers.se)
2020-11-02 07:29:18 +0100drbean(~drbean@TC210-63-209-71.static.apol.com.tw) (Ping timeout: 272 seconds)
2020-11-02 07:36:48 +0100Jeanne-Kamikaze(~Jeanne-Ka@68.235.43.86) (Ping timeout: 256 seconds)
2020-11-02 07:38:02 +0100 <danso> does it make a difference whether i use `StateT s (Either e a)` or `ExceptT e (State s) a` ?
2020-11-02 07:43:14 +0100xff0x(~fox@2001:1a81:537c:3e00:c8f2:34d9:3609:f336) (Ping timeout: 264 seconds)
2020-11-02 07:44:07 +0100xff0x(~fox@2001:1a81:537c:3e00:f9de:e525:5d75:c389)
2020-11-02 07:45:59 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 07:46:15 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2020-11-02 07:47:05 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-02 07:52:14 +0100 <int-e> danso: They're isomorphic as types, but the latter has a handy Monad instance that propagates errors (approximately what your `case`s do)
2020-11-02 07:52:36 +0100 <int-e> (or exceptions, whatever)
2020-11-02 07:54:08 +0100 <int-e> danso: Err
2020-11-02 07:54:52 +0100 <int-e> danso: Sorry, I misread because the former is wrong... you must have meant StateT s (Either e) a.
2020-11-02 07:55:29 +0100 <int-e> danso: In which case, the main difference is that the former will forget the state on an exception/error.
2020-11-02 07:55:50 +0100 <danso> ah i see i mistyped
2020-11-02 07:55:56 +0100 <danso> oops
2020-11-02 07:56:02 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 07:56:12 +0100 <danso> okay, i definitely want to keep the state
2020-11-02 07:56:15 +0100 <danso> thanks int-e
2020-11-02 07:56:52 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6)
2020-11-02 07:56:52 +0100 <danso> curious, why does that happen?
2020-11-02 07:58:44 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-02 07:59:00 +0100drbean(~drbean@TC210-63-209-59.static.apol.com.tw)
2020-11-02 07:59:46 +0100 <int-e> @unmtl StateT s (Either e a)
2020-11-02 07:59:46 +0100 <lambdabot> err: `StateT s (Either e a)' is not applied to enough arguments, giving `/\A. s -> Either e a (A, s)'
2020-11-02 07:59:51 +0100 <int-e> @unmtl StateT s (Either e) a
2020-11-02 07:59:51 +0100 <lambdabot> s -> Either e (a, s)
2020-11-02 08:00:19 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c)
2020-11-02 08:00:29 +0100 <int-e> Because StateT puts the resulting state into the monadic return value and Either's Left doesn't have one.
2020-11-02 08:00:41 +0100 <int-e> @unmtl ErrorT e (State s) a
2020-11-02 08:00:41 +0100 <lambdabot> s -> (Either e a, s)
2020-11-02 08:01:05 +0100yinfeng(~yinfeng@2001:250:5002:8100::1:851e) (Quit: WeeChat 2.9)
2020-11-02 08:01:19 +0100toorevitimirp(~tooreviti@117.182.183.132) (Quit: Konversation terminated!)
2020-11-02 08:01:51 +0100 <int-e> Whereas this always has a state. (ErrorT is a bit weird and deprecated, but @unmtl doesn't know ExceptT)
2020-11-02 08:02:45 +0100 <danso> ah thanks, the ErrorT left me confused
2020-11-02 08:03:35 +0100florian_(~florian@85-170-214-92.rev.numericable.fr)
2020-11-02 08:04:36 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 08:05:22 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-02 08:08:25 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 240 seconds)
2020-11-02 08:08:31 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-11-02 08:08:46 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-11-02 08:09:33 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-02 08:09:39 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 08:10:31 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-02 08:11:27 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2020-11-02 08:14:09 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 08:17:10 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2020-11-02 08:17:34 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-02 08:17:53 +0100chaosmasttter(~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de)
2020-11-02 08:19:27 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 08:21:13 +0100 <energizer> what is the name of the function that takes f : X -> Y and Either X Null, if a is Null returns Null otherwise `f a`?
2020-11-02 08:22:31 +0100 <energizer> (forgive my word choice, i'm not experienced with this kind of stuff)
2020-11-02 08:22:40 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 08:23:59 +0100 <energizer> for example, it takes addOne and either a number or null, and if it's null returns null, but otherwise increments the number
2020-11-02 08:24:48 +0100 <energizer> f addOne null = null; f addOne 3 = 4
2020-11-02 08:25:17 +0100 <danso> what you're talking about is basically fmap
2020-11-02 08:25:35 +0100 <danso> but you seem to be mixing a few different ideas here
2020-11-02 08:25:41 +0100 <energizer> oh?
2020-11-02 08:25:55 +0100ski(~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 260 seconds)
2020-11-02 08:25:58 +0100sfvm(~sfvm@37.228.215.148) (Remote host closed the connection)
2020-11-02 08:26:03 +0100 <danso> @t fmap
2020-11-02 08:26:04 +0100 <lambdabot> Maybe you meant: tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type v @ ? .
2020-11-02 08:26:13 +0100 <danso> @type fmap
2020-11-02 08:26:14 +0100 <lambdabot> Functor f => (a -> b) -> f a -> f b
2020-11-02 08:26:43 +0100 <danso> is your `Null` defined like `data Null = Null` ?
2020-11-02 08:27:02 +0100 <danso> i think you most likely mean Maybe instead of Either
2020-11-02 08:27:05 +0100frankie2(~frankie@185.104.184.43)
2020-11-02 08:27:30 +0100 <energizer> Maybe sounds like like it's in the right direction
2020-11-02 08:27:52 +0100 <danso> also fmap on Either maps a function over the right side, not the left one
2020-11-02 08:28:15 +0100 <danso> fmap on maybe is
2020-11-02 08:28:28 +0100 <danso> fmap f (Just a) = Just (f a)
2020-11-02 08:28:35 +0100 <danso> fmap f Nothing = Nothing
2020-11-02 08:28:44 +0100 <energizer> yeah that's what i mean ^
2020-11-02 08:29:19 +0100 <danso> if you want to get cute you could use <$> or <&>
2020-11-02 08:29:36 +0100 <dminuoso> In fact, <$> is very typical
2020-11-02 08:29:44 +0100 <danso> a <&> f is the same as `fmap f a`
2020-11-02 08:30:10 +0100 <dminuoso> With a bit of squinting <$> behaves a bit like ($), which is possibly why they both have a dollar in their name.
2020-11-02 08:32:16 +0100sQVe(~sQVe@unaffiliated/sqve)
2020-11-02 08:32:44 +0100 <energizer> how is <$> used here?
2020-11-02 08:33:10 +0100 <danso> f <$> a
2020-11-02 08:33:30 +0100 <danso> `<$>` is the same as `flip <&>`
2020-11-02 08:33:34 +0100 <danso> @type <$>
2020-11-02 08:33:36 +0100 <lambdabot> error: parse error on input ‘<$>’
2020-11-02 08:33:38 +0100christo(~chris@81.96.113.213)
2020-11-02 08:33:40 +0100 <danso> @type (<$>)
2020-11-02 08:33:42 +0100 <lambdabot> Functor f => (a -> b) -> f a -> f b
2020-11-02 08:35:12 +0100 <energizer> ok i get it
2020-11-02 08:35:45 +0100 <dminuoso> c.f.:
2020-11-02 08:35:48 +0100 <dminuoso> :t ($)
2020-11-02 08:35:49 +0100 <lambdabot> (a -> b) -> a -> b
2020-11-02 08:37:10 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
2020-11-02 08:37:17 +0100 <energizer> is <$> or <&> more used?
2020-11-02 08:37:27 +0100 <dminuoso> <$> by far
2020-11-02 08:37:45 +0100 <dminuoso> Depending on the project and situation you might either see fmap or <$> being used more
2020-11-02 08:37:51 +0100 <dminuoso> Sometimes its handy to use both at the same time
2020-11-02 08:37:59 +0100 <dminuoso> fmap f <$> g
2020-11-02 08:38:00 +0100Tario(~Tario@200.119.185.133) (Ping timeout: 256 seconds)
2020-11-02 08:38:42 +0100Tario(~Tario@201.191.91.236)
2020-11-02 08:39:03 +0100 <danso> haskellers are pretty inconsistent on this point, you can see
2020-11-02 08:39:29 +0100 <danso> <$> is preferred over <&> but >>= is preferred over =<<
2020-11-02 08:39:39 +0100 <dminuoso> Dunno about that
2020-11-02 08:39:43 +0100 <dminuoso> I prefer =<< by far :p
2020-11-02 08:40:03 +0100 <danso> and i prefer <&> !
2020-11-02 08:40:04 +0100 <dminuoso> In fact, =<< often arises when I write code with <$> first, just to realize it should have been bind instead.
2020-11-02 08:40:13 +0100 <danso> i don't think either of us are in the majority though :^)
2020-11-02 08:40:15 +0100 <dminuoso> I found <&> to be useful in writing decoders :)
2020-11-02 08:40:44 +0100 <dminuoso> f x 1 = getWord32 <&> Something
2020-11-02 08:40:48 +0100 <dminuoso> f x 2 = getWord32 <&> AnotherThing
2020-11-02 08:41:00 +0100 <dminuoso> For a sufficiently large f this aligns much more nicer
2020-11-02 08:41:08 +0100 <danso> one of the haskell survey questions should have been >>= vs =<<
2020-11-02 08:41:21 +0100 <danso> pity we just missed it
2020-11-02 08:41:29 +0100 <dminuoso> Didn't get the memo
2020-11-02 08:42:50 +0100toorevitimirp(~tooreviti@117.182.183.132)
2020-11-02 08:45:50 +0100 <energizer> why is it called <&> ?
2020-11-02 08:46:28 +0100 <dminuoso> energizer: Presmuably because (&) is a flipped ($)
2020-11-02 08:46:39 +0100 <dminuoso> % :t ($)
2020-11-02 08:46:40 +0100 <yahb> dminuoso: (a -> b) -> a -> b
2020-11-02 08:46:43 +0100 <dminuoso> % :t (<$>)
2020-11-02 08:46:43 +0100 <yahb> dminuoso: Functor f => (a -> b) -> f a -> f b
2020-11-02 08:46:46 +0100 <dminuoso> % :t ($)
2020-11-02 08:46:46 +0100 <yahb> dminuoso: (a -> b) -> a -> b
2020-11-02 08:46:49 +0100 <dminuoso> % :t (<$>)
2020-11-02 08:46:49 +0100 <yahb> dminuoso: Functor f => (a -> b) -> f a -> f b
2020-11-02 08:47:08 +0100 <dminuoso> % :t (<&>)
2020-11-02 08:47:09 +0100 <yahb> dminuoso: Functor f => f a -> (a -> b) -> f b
2020-11-02 08:47:10 +0100 <dminuoso> Sorry
2020-11-02 08:47:12 +0100 <dminuoso> :)
2020-11-02 08:47:17 +0100 <dminuoso> % :t (&)
2020-11-02 08:47:17 +0100 <yahb> dminuoso: a -> (a -> b) -> b
2020-11-02 08:47:27 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 08:48:26 +0100Sanchayan(~Sanchayan@106.200.218.30)
2020-11-02 08:48:48 +0100christo(~chris@81.96.113.213)
2020-11-02 08:48:51 +0100 <energizer> alright, so why are they called & and $ ?
2020-11-02 08:49:05 +0100 <danso> dminuoso, the survey is definitely still open
2020-11-02 08:49:08 +0100 <danso> i believe it was posted today
2020-11-02 08:49:28 +0100 <danso> energizer, because they're common things to do, so they should be short
2020-11-02 08:50:27 +0100 <energizer> $ kinda looks like flipping, yknow
2020-11-02 08:50:57 +0100mimi1vx(~mimi@tulipan.habr.nat.praha12.net)
2020-11-02 08:51:11 +0100 <energizer> & is like 'and' but i'm not sure if fmap is related to 'and'
2020-11-02 08:51:15 +0100 <dminuoso> Well you have to call them something..
2020-11-02 08:51:33 +0100 <dminuoso> There's very limited ASCII characters available
2020-11-02 08:52:34 +0100 <energizer> yeah sometimes notation is just "gotta pick something" and sometimes there's a hidden connection to some concept
2020-11-02 08:52:38 +0100 <danso> i think you have misunderstood
2020-11-02 08:52:44 +0100 <danso> $ is apply
2020-11-02 08:52:48 +0100 <danso> as in function application
2020-11-02 08:52:53 +0100 <danso> f(x) is f $ x
2020-11-02 08:52:54 +0100 <dminuoso> energizer: I dont think there's a particular reason for those choices on function application.
2020-11-02 08:53:14 +0100 <danso> & is apply with its arguments flipped, so x & f is f(x)
2020-11-02 08:53:36 +0100 <energizer> mhmm
2020-11-02 08:53:47 +0100 <danso> the parallel is that <$> is fmap and <&> is fmap with its args flipped
2020-11-02 08:54:00 +0100 <dminuoso> energizer: You could ask on haskell-cafe though, if you're curious.
2020-11-02 08:54:02 +0100mimi_vx(~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 264 seconds)
2020-11-02 08:54:10 +0100 <energizer> ok that does make it clearer. thanks.
2020-11-02 08:54:14 +0100 <dminuoso> It's possible someone there knows of a connection, perhaps they were burrowed from another language
2020-11-02 08:54:30 +0100 <dminuoso> Or maybe from some field in mathematics
2020-11-02 08:54:54 +0100 <dminuoso> Though I think the primary reason would be
2020-11-02 08:55:18 +0100 <dminuoso> There aren't many other characters ASCII characters left that suggest different things
2020-11-02 08:55:28 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-02 08:55:35 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-02 08:55:44 +0100 <dminuoso> -+*^ are already used for arithmatic
2020-11-02 08:55:51 +0100 <danso> i don't know of languages that predate haskell that use an operator for fn application
2020-11-02 08:56:04 +0100 <dminuoso> @ cant be used as a standalone operator because its used for as-paterns
2020-11-02 08:56:11 +0100 <danso> i suspect the same as you. what else would it be? @? #? ~?
2020-11-02 08:56:17 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-02 08:56:32 +0100 <dminuoso> So what you're left with is #, $ and &
2020-11-02 08:56:42 +0100 <danso> @-patterns were only added into ghc in the last few years, i think
2020-11-02 08:56:42 +0100 <lambdabot> Unknown command, try @list
2020-11-02 08:56:50 +0100 <dminuoso> Oh, then include @ in that list
2020-11-02 08:57:02 +0100 <danso> $ definitely predates it by at least 15 years
2020-11-02 08:57:04 +0100 <dminuoso> Out of those, perhaps $ renders less widely and reads better than the rest.
2020-11-02 08:57:19 +0100 <energizer> coulda been `??` ?
2020-11-02 08:57:25 +0100 <dminuoso> Sure, could have.
2020-11-02 08:57:45 +0100 <dminuoso> But then you'd ask "why chose ?? and not $" :)
2020-11-02 08:57:51 +0100 <energizer> heheh
2020-11-02 08:58:09 +0100 <danso> is ? actually used for anything other than implicit params?
2020-11-02 08:58:23 +0100 <danso> it might not be an allowed operator character
2020-11-02 08:58:29 +0100 <dminuoso> % f ? g = f + g
2020-11-02 08:58:29 +0100 <yahb> dminuoso: ; <interactive>:324:1: warning: [-Wname-shadowing] This binding for `f' shadows the existing binding defined at <interactive>:168:1
2020-11-02 08:58:31 +0100 <dminuoso> Seems fine
2020-11-02 08:58:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 08:58:53 +0100 <danso> hm, i don't recall ever seeing it used
2020-11-02 08:59:21 +0100idhugo(~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
2020-11-02 08:59:21 +0100 <dminuoso> ? is used a lot in lens operators
2020-11-02 08:59:30 +0100 <dminuoso> Think it's usually for things that deal with Maybe
2020-11-02 08:59:48 +0100 <dminuoso> % :t (?~)
2020-11-02 08:59:48 +0100 <yahb> dminuoso: ASetter s t a (Maybe b) -> b -> s -> t
2020-11-02 09:00:01 +0100 <danso> i could see it working as the function `Maybe a -> a -> a`
2020-11-02 09:00:02 +0100 <dminuoso> % :t (^?)
2020-11-02 09:00:02 +0100 <yahb> dminuoso: s -> Getting (First a) s a -> Maybe a
2020-11-02 09:02:23 +0100sQVe(~sQVe@unaffiliated/sqve) (Quit: Bye!)
2020-11-02 09:05:35 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 09:06:07 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2020-11-02 09:06:40 +0100 <energizer> that's like regex
2020-11-02 09:07:59 +0100Inoperable(~PLAYER_1@fancydata.science) (Excess Flood)
2020-11-02 09:09:07 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-02 09:09:54 +0100leah2(~leah@vuxu.org)
2020-11-02 09:10:36 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-11-02 09:11:01 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 09:11:18 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2020-11-02 09:14:43 +0100Inoperable(~PLAYER_1@fancydata.science)
2020-11-02 09:15:32 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 09:16:52 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-11-02 09:20:43 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 09:21:57 +0100manu1511(~manu@194-208-201-025.tele.net)
2020-11-02 09:22:04 +0100manu1511(~manu@194-208-201-025.tele.net) ()
2020-11-02 09:23:36 +0100drbean(~drbean@TC210-63-209-59.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
2020-11-02 09:27:02 +0100alp(~alp@88.126.45.36)
2020-11-02 09:27:31 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-02 09:28:02 +0100thir(~thir@pd9e1bd8a.dip0.t-ipconnect.de)
2020-11-02 09:28:14 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 09:28:22 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 09:30:44 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-02 09:31:05 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-02 09:31:52 +0100 <merijn> Don't forget !? from containers
2020-11-02 09:32:05 +0100thir(~thir@pd9e1bd8a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 09:32:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 09:32:44 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2020-11-02 09:34:53 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-02 09:35:15 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-02 09:36:10 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-11-02 09:36:16 +0100 <tomsmeding> Accelerate has (?) for the infix if-operator of the EDSL: https://hackage.haskell.org/package/accelerate-1.3.0.0/docs/Data-Array-Accelerate.html#v:-63- (warning, large page)
2020-11-02 09:38:46 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-02 09:41:39 +0100alp(~alp@88.126.45.36) (Remote host closed the connection)
2020-11-02 09:41:49 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-02 09:42:02 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-almrgtblciiegvzz) (Quit: Connection closed for inactivity)
2020-11-02 09:43:19 +0100Inoperable(~PLAYER_1@fancydata.science) (Excess Flood)
2020-11-02 09:43:38 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de)
2020-11-02 09:47:10 +0100 <tomsmeding> programming language documentation pages are the best browser benchmarks nowadays
2020-11-02 09:47:28 +0100Franciman(~francesco@host-79-36-167-172.retail.telecomitalia.it)
2020-11-02 09:50:15 +0100Neo--(~neo@188-230-154-134.dynamic.t-2.net)
2020-11-02 09:51:01 +0100Inoperable(~PLAYER_1@fancydata.science)
2020-11-02 09:51:22 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-02 09:51:26 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-02 09:51:42 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-02 09:52:00 +0100hackagecobot-io 0.1.3.9 - Biological data file formats and IO https://hackage.haskell.org/package/cobot-io-0.1.3.9 (ozzzzz)
2020-11-02 09:56:08 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-02 09:56:18 +0100todda7(~torstein@2a02:587:d28:2900:bd30:f5ea:90f2:33aa)
2020-11-02 09:58:34 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 246 seconds)
2020-11-02 09:58:36 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 09:58:42 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 09:59:28 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com)
2020-11-02 10:00:01 +0100frankie2(~frankie@185.104.184.43) ()
2020-11-02 10:03:03 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-02 10:03:04 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 10:03:32 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 10:05:58 +0100jneira(501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250) (Ping timeout: 268 seconds)
2020-11-02 10:07:19 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-02 10:07:29 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-02 10:07:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 10:14:48 +0100thc202(~thc202@unaffiliated/thc202)
2020-11-02 10:17:31 +0100britva(~britva@2a02:aa13:7240:2980:fc63:822e:7d74:772d)
2020-11-02 10:17:44 +0100flatmap(~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de)
2020-11-02 10:23:01 +0100day(~Unknown@unaffiliated/day) (Ping timeout: 264 seconds)
2020-11-02 10:23:12 +0100m0rphism(~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
2020-11-02 10:23:12 +0100day(~Unknown@unaffiliated/day)
2020-11-02 10:26:47 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 10:27:11 +0100sam___(~sam@228.175.185.81.rev.sfr.net)
2020-11-02 10:28:54 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 10:30:14 +0100kuribas(~user@ptr-25vy0i9b0d7gsf4mjtv.18120a2.ip6.access.telenet.be)
2020-11-02 10:31:33 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 10:33:06 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 256 seconds)
2020-11-02 10:33:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 10:33:45 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com)
2020-11-02 10:36:48 +0100xff0x(~fox@2001:1a81:537c:3e00:f9de:e525:5d75:c389) (Ping timeout: 268 seconds)
2020-11-02 10:37:18 +0100xff0x(~fox@2001:1a81:537c:3e00:725d:2adb:f456:fdfe)
2020-11-02 10:37:56 +0100yinfeng(~yinfeng@2001:250:5002:8100::5e0b)
2020-11-02 10:38:15 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 10:39:32 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 10:40:13 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-11-02 10:40:23 +0100DavidEichmann(~david@43.240.198.146.dyn.plus.net)
2020-11-02 10:44:12 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 268 seconds)
2020-11-02 10:44:23 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 10:44:32 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 10:44:36 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 10:44:42 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-02 10:45:00 +0100hackagesdl2 2.5.3.0 - Both high- and low-level bindings to the SDL library (version 2.0.6+). https://hackage.haskell.org/package/sdl2-2.5.3.0 (OliverCharles)
2020-11-02 10:45:01 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 10:45:05 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 10:45:30 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 10:45:33 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 10:45:57 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 10:46:00 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 10:46:26 +0100LambdaScientist(~LambdaSci@24.42.199.176)
2020-11-02 10:46:30 +0100LambdaScientist(~LambdaSci@24.42.199.176) (Excess Flood)
2020-11-02 10:47:58 +0100berberman_(~berberman@unaffiliated/berberman)
2020-11-02 10:49:14 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2020-11-02 10:50:05 +0100britva(~britva@2a02:aa13:7240:2980:fc63:822e:7d74:772d) (Quit: This computer has gone to sleep)
2020-11-02 10:50:11 +0100flatmap(~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de) (Quit: Textual IRC Client: www.textualapp.com)
2020-11-02 10:55:34 +0100donri(~donri@139.28.218.148)
2020-11-02 10:56:22 +0100pera(~pera@unaffiliated/pera)
2020-11-02 10:58:29 +0100britva(~britva@31.10.157.156)
2020-11-02 10:59:12 +0100guest112(~user@49.5.6.87) (Remote host closed the connection)
2020-11-02 10:59:43 +0100dustypacer(~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4) (Read error: Connection reset by peer)
2020-11-02 11:01:03 +0100ski(~ski@remote11.chalmers.se)
2020-11-02 11:06:47 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-02 11:09:31 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2020-11-02 11:13:51 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 11:14:15 +0100tuple(~igloo@c-67-169-78-228.hsd1.ca.comcast.net)
2020-11-02 11:14:42 +0100tuple(~igloo@c-67-169-78-228.hsd1.ca.comcast.net) (Client Quit)
2020-11-02 11:18:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 11:20:28 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
2020-11-02 11:22:01 +0100hackagepostgresql-libpq 0.9.4.3 - low-level binding to libpq https://hackage.haskell.org/package/postgresql-libpq-0.9.4.3 (phadej)
2020-11-02 11:22:26 +0100acidjnk_new(~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de)
2020-11-02 11:22:46 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2020-11-02 11:23:03 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-11-02 11:27:10 +0100nshepperd26(~nshepperd@li364-218.members.linode.com)
2020-11-02 11:27:13 +0100eedgit22(~chat.free@95.179.237.21)
2020-11-02 11:27:46 +0100rotaerk(~rotaerk@ender.afternet.org) (Ping timeout: 265 seconds)
2020-11-02 11:27:50 +0100stree_(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
2020-11-02 11:27:53 +0100pjb(~t@2a01cb04063ec5002c0fc7d86fb8e728.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
2020-11-02 11:27:53 +0100nshepperd2(~nshepperd@li364-218.members.linode.com) (Read error: Connection reset by peer)
2020-11-02 11:27:54 +0100stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Excess Flood)
2020-11-02 11:27:54 +0100eedgit2(~chat.free@95.179.237.21) (Read error: Connection reset by peer)
2020-11-02 11:27:54 +0100p3n(~p3n@217.198.124.246) (Ping timeout: 260 seconds)
2020-11-02 11:27:54 +0100nshepperd26nshepperd2
2020-11-02 11:27:54 +0100eedgit22eedgit2
2020-11-02 11:27:56 +0100nekomune(~nekomune@comfy.moe) (Quit: ZNC 1.7.2 - https://znc.in)
2020-11-02 11:28:03 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1)
2020-11-02 11:28:14 +0100nekomune(~nekomune@comfy.moe)
2020-11-02 11:28:15 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 265 seconds)
2020-11-02 11:29:20 +0100alp(~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3)
2020-11-02 11:29:57 +0100florian_(~florian@85-170-214-92.rev.numericable.fr) (Read error: Connection reset by peer)
2020-11-02 11:30:24 +0100florian_(~florian@85-170-214-92.rev.numericable.fr)
2020-11-02 11:32:44 +0100khaladrogo_lite(~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55)
2020-11-02 11:34:46 +0100rprije(~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 268 seconds)
2020-11-02 11:35:01 +0100sam___(~sam@228.175.185.81.rev.sfr.net) (Ping timeout: 264 seconds)
2020-11-02 11:39:33 +0100ubert(~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de)
2020-11-02 11:45:33 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net)
2020-11-02 11:50:06 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 11:55:18 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-02 11:55:27 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
2020-11-02 11:56:54 +0100sam___(~sam@5.197.204.77.rev.sfr.net)
2020-11-02 11:57:13 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-11-02 11:57:27 +0100pjb(~t@2a01cb04063ec5002c0fc7d86fb8e728.ipv6.abo.wanadoo.fr)
2020-11-02 12:01:25 +0100rotaerk(rotaerk@2600:3c02::f03c:91ff:fe70:4a45)
2020-11-02 12:01:27 +0100nkly(~nkly@ip5b40d080.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2020-11-02 12:01:42 +0100domjancik(~domj@77.139.218.14)
2020-11-02 12:02:00 +0100domj(~domj@77.139.218.14) (Ping timeout: 256 seconds)
2020-11-02 12:02:26 +0100Codaraxis(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 264 seconds)
2020-11-02 12:02:31 +0100nkly(~nkly@ip5b40d080.dynamic.kabel-deutschland.de)
2020-11-02 12:03:15 +0100is_null(~jpic@pdpc/supporter/professional/is-null)
2020-11-02 12:05:30 +0100Codaraxis(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-11-02 12:06:35 +0100rotaerk(rotaerk@2600:3c02::f03c:91ff:fe70:4a45) (Ping timeout: 272 seconds)
2020-11-02 12:06:52 +0100darjeeling_(~darjeelin@115.215.40.228) (Quit: WeeChat 2.9)
2020-11-02 12:07:53 +0100darjeeling_(~darjeelin@115.215.40.228)
2020-11-02 12:12:12 +0100 <dminuoso> Is using equality constraints as "type level let-bindings" a sane thing to do?
2020-11-02 12:12:12 +0100Codaraxis(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 256 seconds)
2020-11-02 12:12:41 +0100 <dminuoso> in particular to sort of "bind the result of a tyfam"
2020-11-02 12:13:03 +0100 <dminuoso> e.g. `forall m s. (m ~ MappedInto s, Foo s, Bar m, Quux m) => ...`
2020-11-02 12:14:36 +0100Codaraxis(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-11-02 12:15:26 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-02 12:15:45 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-02 12:16:34 +0100Eason0210(~user@101.85.10.81)
2020-11-02 12:16:55 +0100sam___(~sam@5.197.204.77.rev.sfr.net) (Ping timeout: 260 seconds)
2020-11-02 12:17:27 +0100sam___(~sam@5.197.204.77.rev.sfr.net)
2020-11-02 12:21:52 +0100zincy__(~tom@host86-169-79-54.range86-169.btcentralplus.com) (Remote host closed the connection)
2020-11-02 12:23:36 +0100Tario(~Tario@201.191.91.236) (Ping timeout: 256 seconds)
2020-11-02 12:25:42 +0100Codaraxis(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
2020-11-02 12:26:16 +0100Tario(~Tario@200.119.184.48)
2020-11-02 12:27:38 +0100chaosmasttter(~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-02 12:30:32 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 12:33:46 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net) (Remote host closed the connection)
2020-11-02 12:34:35 +0100ubert(~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 12:35:16 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2020-11-02 12:36:50 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Quit: ZNC 1.7.5 - https://znc.in)
2020-11-02 12:37:26 +0100Eason0210(~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50))
2020-11-02 12:40:03 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
2020-11-02 12:40:46 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2020-11-02 12:41:33 +0100meowphius(~meowphius@pool-96-237-166-172.bstnma.fios.verizon.net)
2020-11-02 12:42:27 +0100Eason0210(~user@101.85.10.81)
2020-11-02 12:44:26 +0100florian_(~florian@85-170-214-92.rev.numericable.fr) (Ping timeout: 264 seconds)
2020-11-02 12:45:03 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-02 12:47:26 +0100_xor(~xor@74.215.46.133) (Ping timeout: 264 seconds)
2020-11-02 12:47:26 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 12:49:57 +0100drbean(~drbean@TC210-63-209-202.static.apol.com.tw)
2020-11-02 12:51:19 +0100chaosmasttter(~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de)
2020-11-02 12:52:26 +0100donri(~donri@139.28.218.148) (Remote host closed the connection)
2020-11-02 12:52:51 +0100rotaerk(rotaerk@2600:3c02::f03c:91ff:fe70:4a45)
2020-11-02 12:53:27 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-onbapdmfluqaidcp)
2020-11-02 12:56:34 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 12:57:07 +0100Tario(~Tario@200.119.184.48) (Ping timeout: 258 seconds)
2020-11-02 12:59:35 +0100Tario(~Tario@200.119.184.48)
2020-11-02 13:01:00 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 13:01:56 +0100_xor(~xor@74.215.46.133)
2020-11-02 13:06:38 +0100britva(~britva@31.10.157.156) (Quit: This computer has gone to sleep)
2020-11-02 13:07:00 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-11-02 13:07:11 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net)
2020-11-02 13:08:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 13:09:08 +0100 <matthew-> is there a ghc command or something that'll tell me how an expression is being bracketed?
2020-11-02 13:10:13 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-02 13:10:14 +0100 <matthew-> in res = Subst $ Map.map (apply (Subst s1)) s2 `Map.union` s1, I'm assuming the s2 is an arg to Map.map, and not an arg to Map.union
2020-11-02 13:10:17 +0100 <merijn> matthew-: No, but you can query the precedence of operators via ":i"
2020-11-02 13:10:58 +0100 <merijn> matthew-: Easy answer, infix precedence is *always* lower than function application
2020-11-02 13:11:47 +0100 <merijn> matthew-: infix precedence ranges from 0 to 9, function application has precedence 10 (and record syntax has 11, but that's a bit niche), so 's2' is indeed an argument to Map.map
2020-11-02 13:11:57 +0100 <matthew-> ahh yes, I remember that rule.
2020-11-02 13:12:00 +0100 <matthew-> cool, thank you very much.
2020-11-02 13:12:12 +0100 <merijn> % :i `elem`
2020-11-02 13:12:12 +0100 <yahb> merijn: type Foldable :: (* -> *) -> Constraint; class Foldable t where; ...; elem :: Eq a => a -> t a -> Bool; ...; -- Defined in `Data.Foldable'; infix 4 `elem`
2020-11-02 13:12:25 +0100 <Uniaika> I feel like the bracketing is Subst $ (Map.map (apply (Subst s1)) s2) `Map.union` s1
2020-11-02 13:12:47 +0100 <Uniaika> that's my intuition
2020-11-02 13:12:58 +0100plutoniix(~q@175.176.222.7) (Quit: Leaving)
2020-11-02 13:13:00 +0100 <merijn> matthew-: So ":i `Map.union`" in ghci should tell you its precedence
2020-11-02 13:13:30 +0100hackagehaskoin-core 0.17.1 - Bitcoin & Bitcoin Cash library for Haskell https://hackage.haskell.org/package/haskoin-core-0.17.1 (jprupp)
2020-11-02 13:13:37 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 13:14:22 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-02 13:15:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 13:18:34 +0100 <typetetris> ... is there any benefit to learning arrows and this "arrow style" ? Looking into the niv source code it seems to be some kind of obfuscation technique to scare people away.
2020-11-02 13:18:52 +0100 <merijn> typetetris: Not really
2020-11-02 13:19:02 +0100 <merijn> typetetris: Arrow as an abstraction is mostly obsolete
2020-11-02 13:19:26 +0100 <typetetris> If it is obsolete, what is its replacement?
2020-11-02 13:19:57 +0100 <merijn> Category from Control.Category, Applicative, and Profunctor all replace different aspects of it
2020-11-02 13:20:27 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2020-11-02 13:20:49 +0100 <merijn> There's no real "this replaces all of Arrow" thing, it's mostly that Arrow had rather limited applicability and different aspects of it have been subsumed by more useful abstraction (like those 3)
2020-11-02 13:20:58 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 13:21:35 +0100 <typetetris> merijn: Is there some introductory material for the combination of those three things? (Like the papers mentioned in https://downloads.haskell.org/ghc/latest/docs/html/users_guide/glasgow_exts.html#arrow-notation for arrows for example)
2020-11-02 13:21:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 13:22:10 +0100 <merijn> No clue, I'm just parrotting people from here :p
2020-11-02 13:23:47 +0100 <matthew-> merijn: yup, I would really like an editor mode where it does all those lookups for me and draws in the parens - would aid code comprehension imo
2020-11-02 13:24:10 +0100sam___(~sam@5.197.204.77.rev.sfr.net) (Ping timeout: 256 seconds)
2020-11-02 13:25:04 +0100acidjnk_new(~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 13:25:42 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 13:25:44 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2020-11-02 13:26:01 +0100sam___(~sam@48.16.23.93.rev.sfr.net)
2020-11-02 13:27:01 +0100khaladrogo_lite(~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55) (Quit: Leaving)
2020-11-02 13:29:00 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2020-11-02 13:29:06 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
2020-11-02 13:30:04 +0100khaladrogo(~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55)
2020-11-02 13:30:45 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 13:33:14 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 13:35:04 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-02 13:36:04 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-02 13:36:55 +0100 <matthew-> when implementing a language - a mini-haskell if you like - is there any downside to treating every let as if it's a let-rec ?
2020-11-02 13:37:10 +0100Ariakenom(~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se)
2020-11-02 13:37:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
2020-11-02 13:37:52 +0100 <matthew-> (from a DHM type-inference pov)
2020-11-02 13:37:58 +0100 <ski> let x = foo 42 in let x = bar 3 x in let x = baz (frob x) in ..x..
2020-11-02 13:38:19 +0100 <merijn> matthew-: Have you heard of our Lord and Saviour TaPL? ;)
2020-11-02 13:38:22 +0100 <merijn> @where tapl
2020-11-02 13:38:22 +0100 <lambdabot> "Types and Programming Languages" by Benjamin C. Pierce in 2002-02-01 at <https://www.cis.upenn.edu/~bcpierce/tapl/>
2020-11-02 13:38:35 +0100 <matthew-> yeah, I have it in front of me, along with Advanced...
2020-11-02 13:38:48 +0100urodna(~urodna@unaffiliated/urodna)
2020-11-02 13:39:21 +0100 <merijn> matthew-: I recall there being a discussion of the difficulty with recursive bindings at some point in TaPL, but I don't quite recall where, tbh
2020-11-02 13:40:49 +0100 <matthew-> I have working DHM based on constraint generation as in Advanced Topics in .... Inference for recursive functions is just fine, it's just the recursive call must be the same monotype. Only the let-binding gets generalised to the principle type
2020-11-02 13:41:33 +0100 <matthew-> if you treat let rec x = foo as let x = fix (\x -> foo) then it seems to me like you don't need let on its own
2020-11-02 13:42:13 +0100 <jophish> 'cabal.project.local file already exists. Now overwriting it'
2020-11-02 13:42:27 +0100 <jophish> Wtf cabal, I spent ages writing that...
2020-11-02 13:42:27 +0100 <merijn> You never *need* let, you can always achieve it via lambda binding
2020-11-02 13:42:43 +0100 <merijn> jophish: It makes a backup
2020-11-02 13:42:55 +0100 <merijn> Should be in cabal.project.local~
2020-11-02 13:43:08 +0100 <jophish> Ah I see
2020-11-02 13:43:12 +0100 <matthew-> aye, true. So then my puzzlement is why does eg ML have both let and let rec?
2020-11-02 13:43:16 +0100 <merijn> jophish: Also, it only does that if you run configure, whose explicit only purpose is to create cabal.project.local?
2020-11-02 13:43:21 +0100lucasb(uid333435@gateway/web/irccloud.com/x-pojwugqdpwttxqdq)
2020-11-02 13:43:30 +0100 <jophish> Oh
2020-11-02 13:43:53 +0100 <jophish> Configure generates an empty project.local, even though I'm setting a flag
2020-11-02 13:43:56 +0100 <merijn> jophish: Also, if you cared about persisting whatever you wrote in .local it should probably be in cabal.project? :)
2020-11-02 13:44:24 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9)
2020-11-02 13:44:26 +0100 <jophish> merijn: I don't want it in version control
2020-11-02 13:44:27 +0100 <merijn> jophish: Is that flag already set in cabal.project maybe?
2020-11-02 13:44:37 +0100 <jophish> Nope
2020-11-02 13:44:47 +0100 <jophish> I'm setting it to not the default too
2020-11-02 13:44:47 +0100 <ski> matthew- : convenience. ability to do the example i had above, with that ordering of subexpressions
2020-11-02 13:44:48 +0100 <merijn> hmm, what's the command?
2020-11-02 13:44:55 +0100 <jophish> Sorry for my terseness, I'm on mobile
2020-11-02 13:45:23 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 13:45:31 +0100FreeBirdLjj(~freebirdl@101.228.42.108)
2020-11-02 13:45:39 +0100 <jophish> Cabal configure -fgeneric-instances
2020-11-02 13:46:16 +0100 <jophish> https://github.com/expipiplus1/vulkan/blob/68638aceeb5526b3bf53674f06dc24243d7fda32/.github/workfl…
2020-11-02 13:46:19 +0100 <merijn> jophish: That is not a cabal flag?
2020-11-02 13:46:57 +0100 <matthew-> ski: gotcha - that makes sense - it's about allowing control of the scope of the binder then.
2020-11-02 13:47:01 +0100 <jophish> It's a flag for a package in this project
2020-11-02 13:47:06 +0100 <jophish> Hahah, did I get it wrong!
2020-11-02 13:47:27 +0100 <ski> matthew- : you can also imagine things like `let (m,n) = (n,m+n) in ..m..n..' .. or having a `case' or conditional as the body of the defining equation, in a more complicated case
2020-11-02 13:48:00 +0100 <merijn> jophish: So you wanna set that flag for CI?
2020-11-02 13:48:07 +0100ubert(~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de)
2020-11-02 13:48:34 +0100 <ski> matthew- : if you combine two declarations into one, you can combine them sequentially, collaterally, or recursively
2020-11-02 13:48:35 +0100 <merijn> jophish: Alternate simpler idea: Why not have a dedicated separate project file for the CI config and setting the flag in there?
2020-11-02 13:50:12 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 13:50:25 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-11-02 13:50:26 +0100FreeBirdLjj(~freebirdl@101.228.42.108) (Ping timeout: 268 seconds)
2020-11-02 13:51:10 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2020-11-02 13:51:42 +0100geekosaur(ac3a8c5f@172.58.140.95)
2020-11-02 13:52:50 +0100bqv(~bqv@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2020-11-02 13:52:57 +0100 <bqv> d.nnr
2020-11-02 13:53:08 +0100 <bqv> *hello
2020-11-02 13:53:14 +0100 <ski> hello
2020-11-02 13:53:17 +0100 <bqv> oh, ski
2020-11-02 13:53:21 +0100 <bqv> fancy seeing you here
2020-11-02 13:53:44 +0100 <bqv> have you ever used Foreign.Marshal.Alloc? bizarrely, malloc causes ghc to error with undefined, but mallocBytes doesn't
2020-11-02 13:54:15 +0100 <merijn> Malloc with what argument?
2020-11-02 13:54:26 +0100 <bqv> malloc doesn't require an argument
2020-11-02 13:54:36 +0100notmyname(~notmyname@84.39.116.180)
2020-11-02 13:54:36 +0100 <bqv> Storable a => IO (Ptr a)
2020-11-02 13:54:41 +0100 <bqv> :t malloc
2020-11-02 13:54:42 +0100 <ski> perhaps the `Storable' instance is incorrect ?
2020-11-02 13:54:43 +0100 <lambdabot> error: Variable not in scope: malloc
2020-11-02 13:54:45 +0100 <merijn> Well, what result type, I mean
2020-11-02 13:54:46 +0100 <bqv> ack.
2020-11-02 13:54:51 +0100 <ski> @type Foreign.Marshal.Alloc.malloc
2020-11-02 13:54:52 +0100 <lambdabot> Foreign.Storable.Storable a => IO (GHC.Ptr.Ptr a)
2020-11-02 13:55:04 +0100 <bqv> it's a custom storable
2020-11-02 13:55:16 +0100 <bqv> i would be hardpressed to see how the instance is wrong
2020-11-02 13:55:49 +0100texasmynsted(~texasmyns@212.102.45.115)
2020-11-02 13:55:52 +0100florian_(~florian@85-170-214-92.rev.numericable.fr)
2020-11-02 13:55:54 +0100 <bqv> and like i said, if i just use mallocBytes (sizeof <type>) instead, it works fine
2020-11-02 13:56:00 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-02 13:56:10 +0100 <ski> not your instance then, i take it
2020-11-02 13:56:33 +0100 <bqv> ah, it is my instance. I have it setup using hsc2hs
2020-11-02 13:56:42 +0100 <bqv> i checked the value of sizeOf and alignment using trace, they're fine
2020-11-02 13:56:46 +0100 <bqv> (best i can tell)
2020-11-02 13:56:52 +0100 <jophish> Merijn, and then mv project.ci project.local during the build instead of configure?
2020-11-02 13:57:11 +0100 <matthew-> ski: thank you, that all makes sense
2020-11-02 13:57:22 +0100 <merijn> jophish: eh, or just use --project-file to point it at the right one? ;)
2020-11-02 13:57:36 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 13:57:38 +0100 <jophish> Ah, even better
2020-11-02 13:57:48 +0100 <merijn> jophish: Almost as if this was an anticipated usecae ;)
2020-11-02 13:58:18 +0100 <ski> bqv : "error with undefined", as when forcing `undefined' ?
2020-11-02 13:58:19 +0100Eason0210(~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50))
2020-11-02 13:58:38 +0100 <bqv> yes
2020-11-02 13:58:48 +0100 <bqv> specifically shows me an undefined coming from Alloc.hs
2020-11-02 13:58:57 +0100 <bqv> (in Foreign.Marshal)
2020-11-02 13:59:42 +0100 <merijn> bqv: Can you pastebin your Storable instance somewhere?
2020-11-02 14:00:39 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 14:00:42 +0100texasmynsted(~texasmyns@212.102.45.115) (Ping timeout: 272 seconds)
2020-11-02 14:01:15 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit)
2020-11-02 14:01:28 +0100 <bqv> https://termbin.com/7z9jm
2020-11-02 14:01:33 +0100 <bqv> merijn: happy to oblige
2020-11-02 14:01:50 +0100 <merijn> bqv: You fucked up sizeof :)
2020-11-02 14:01:55 +0100 <merijn> You pattern match
2020-11-02 14:01:56 +0100 <bqv> oh no
2020-11-02 14:01:59 +0100 <bqv> why
2020-11-02 14:02:13 +0100 <merijn> sizeOf shouldn't evaluate it's argument, it's only for type inference
2020-11-02 14:02:26 +0100 <merijn> sizeOf is usually called with undefined as argument (which is what malloc does)
2020-11-02 14:02:36 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-02 14:02:38 +0100 <bqv> oh balls. hence i end up forcing that undefined
2020-11-02 14:02:45 +0100 <bqv> gotcha. thanks
2020-11-02 14:02:47 +0100 <merijn> bqv: So malloc calls "sizeOf undefined" and then crashed on the pattern match ;)
2020-11-02 14:02:51 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 14:03:11 +0100 <merijn> Nowadays people would use "Proxy" to control the type inference, but that didn't exist when Storable was defined
2020-11-02 14:03:33 +0100florian_(~florian@85-170-214-92.rev.numericable.fr) (Read error: Connection reset by peer)
2020-11-02 14:03:33 +0100 <bqv> i remember delving into that once
2020-11-02 14:03:52 +0100florian_(~florian@85-170-214-92.rev.numericable.fr)
2020-11-02 14:04:01 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit)
2020-11-02 14:04:06 +0100domj(~domj@77.139.218.14)
2020-11-02 14:06:19 +0100domjancik(~domj@77.139.218.14) (Ping timeout: 256 seconds)
2020-11-02 14:06:57 +0100 <kuribas> :t asTypeOf
2020-11-02 14:06:57 +0100__monty__(~toonn@unaffiliated/toonn)
2020-11-02 14:06:58 +0100 <lambdabot> a -> a -> a
2020-11-02 14:09:03 +0100florian_(~florian@85-170-214-92.rev.numericable.fr) (Remote host closed the connection)
2020-11-02 14:09:49 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 14:10:05 +0100florian_(~florian@85-170-214-92.rev.numericable.fr)
2020-11-02 14:10:33 +0100florian_(~florian@85-170-214-92.rev.numericable.fr) (Read error: Connection reset by peer)
2020-11-02 14:11:06 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 258 seconds)
2020-11-02 14:11:29 +0100florian_(~florian@85-170-214-92.rev.numericable.fr)
2020-11-02 14:11:59 +0100florian_(~florian@85-170-214-92.rev.numericable.fr) (Max SendQ exceeded)
2020-11-02 14:12:05 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-02 14:12:36 +0100florian_(~florian@85-170-214-92.rev.numericable.fr)
2020-11-02 14:13:33 +0100florian_(~florian@85-170-214-92.rev.numericable.fr) (Remote host closed the connection)
2020-11-02 14:14:05 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 14:15:10 +0100texasmynsted(~texasmyns@212.102.45.115)
2020-11-02 14:15:17 +0100khaladrogo(~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55) (Remote host closed the connection)
2020-11-02 14:19:32 +0100akad_(~akad@109107030050.radomsko.vectranet.pl)
2020-11-02 14:20:35 +0100texasmynsted(~texasmyns@212.102.45.115) (Ping timeout: 260 seconds)
2020-11-02 14:21:12 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 2.9)
2020-11-02 14:23:44 +0100alp(~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3) (Ping timeout: 240 seconds)
2020-11-02 14:26:16 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-02 14:26:19 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-11-02 14:27:14 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-02 14:28:52 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 14:30:20 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-02 14:31:37 +0100akad_(~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 260 seconds)
2020-11-02 14:31:51 +0100ggole(~ggole@2001:8003:8119:7200:c42a:651c:d46:c888)
2020-11-02 14:33:36 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds)
2020-11-02 14:37:09 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1)
2020-11-02 14:41:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 14:41:12 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-02 14:43:27 +0100Sanchayan(~Sanchayan@106.200.218.30) (Quit: leaving)
2020-11-02 14:44:18 +0100khaladrogo(~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7)
2020-11-02 14:44:51 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
2020-11-02 14:45:37 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 14:46:12 +0100drbean(~drbean@TC210-63-209-202.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-11-02 14:47:36 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-11-02 14:49:30 +0100hackagehttp-rfc7807 0.1.0.0 - RFC7807 style response messages https://hackage.haskell.org/package/http-rfc7807-0.1.0.0 (PeterTrsko)
2020-11-02 14:50:00 +0100texasmynsted(~texasmyns@212.102.45.115)
2020-11-02 14:51:40 +0100 <dminuoso> merijn: Interestingly, sizeOf *should* not be fed with undefined.
2020-11-02 14:51:46 +0100 <dminuoso> In most cases there are proper values around
2020-11-02 14:52:43 +0100 <dminuoso> Storable is quite unusable for flexible length things, even if you implement sizeOf to use it, `with` will feed you an undefined rather than the argument.
2020-11-02 14:53:02 +0100 <dminuoso> alloca = allocaBytesAligned (sizeOf (undefined :: a)) (alignment (undefined :: a))
2020-11-02 14:54:22 +0100texasmynsted(~texasmyns@212.102.45.115) (Ping timeout: 260 seconds)
2020-11-02 14:57:06 +0100Ariakenom(~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2020-11-02 14:57:43 +0100alp(~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3)
2020-11-02 14:58:57 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-02 14:59:17 +0100 <bqv> lucky for me, i'm just interfacing a pretty basic C library
2020-11-02 14:59:26 +0100 <bqv> either way, thanks friends, it works!
2020-11-02 14:59:30 +0100todda7(~torstein@2a02:587:d28:2900:bd30:f5ea:90f2:33aa) (Ping timeout: 268 seconds)
2020-11-02 15:00:52 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-02 15:01:44 +0100Ariakenom(~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se)
2020-11-02 15:02:43 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 15:04:39 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1)
2020-11-02 15:07:56 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 15:08:30 +0100zx__(~oracle@unaffiliated/oracle)
2020-11-02 15:09:13 +0100kish`(~oracle@unaffiliated/oracle) (Disconnected by services)
2020-11-02 15:09:19 +0100zx__kish`
2020-11-02 15:09:49 +0100sam___(~sam@48.16.23.93.rev.sfr.net) (Ping timeout: 264 seconds)
2020-11-02 15:10:08 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 256 seconds)
2020-11-02 15:11:18 +0100sam___(~sam@187.164.185.81.rev.sfr.net)
2020-11-02 15:11:26 +0100 <idnar> merijn: nowadays I use TypeApplications instead of Proxy :P
2020-11-02 15:11:40 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-11-02 15:11:48 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-02 15:12:33 +0100machinedgod(~machinedg@207.253.244.210) (Quit: leaving)
2020-11-02 15:12:50 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-02 15:12:54 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-02 15:13:09 +0100eedgit(~eedgit@95.179.237.21) (Quit: Ping timeout (120 seconds))
2020-11-02 15:13:18 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 15:13:29 +0100eedgit(~eedgit@95.179.237.21)
2020-11-02 15:14:49 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-02 15:18:42 +0100Tario(~Tario@200.119.184.48) (Ping timeout: 256 seconds)
2020-11-02 15:18:48 +0100 <dminuoso> idnar: Congratulations, you now rely on an unstable API
2020-11-02 15:19:17 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 15:19:26 +0100 <dminuoso> Do you have polykinds? Then you better also explicitly quantify those, or you dont have compatibility with 8.8
2020-11-02 15:19:30 +0100 <dminuoso> (Or was it 8.10?)
2020-11-02 15:19:45 +0100 <dminuoso> And you must constantly live with the fact that GHC can just change the order of type variables,
2020-11-02 15:20:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 15:21:49 +0100Ariakenom_(~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se)
2020-11-02 15:22:40 +0100 <davean> dminuoso: Yah the type variable order thing with TypeApplication is insane :(
2020-11-02 15:23:04 +0100 <davean> I only use type application with explicite forall
2020-11-02 15:23:04 +0100andi-(~andi-@NixOS/user/andi-) (Remote host closed the connection)
2020-11-02 15:23:20 +0100 <dminuoso> davean: Indeed. I tend to only use it for Proxy
2020-11-02 15:23:22 +0100 <idnar> dminuoso: that certainly sounds like me! I think it won't reorder if you have explicit `forall`, and not working on a library means I care less about compat
2020-11-02 15:23:45 +0100Tario(~Tario@200.119.184.48)
2020-11-02 15:23:48 +0100Ariakenom(~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2020-11-02 15:24:09 +0100 <davean> idnar: it won't reorder the type variables listed in the forall, correct.
2020-11-02 15:24:10 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 15:24:51 +0100 <idnar> but I basically have every extension on at this point :P
2020-11-02 15:24:52 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 15:24:58 +0100 <dminuoso> idnar: Next up, you can only apply visible type arguments
2020-11-02 15:25:06 +0100 <dminuoso> In some situations that can be really annoying
2020-11-02 15:25:10 +0100stree_(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2020-11-02 15:25:27 +0100stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
2020-11-02 15:25:30 +0100 <merijn> idnar: Right, but almost no one has explicit forall in their code and most people don't consider "type variable order" part of their public API for PVP purposes
2020-11-02 15:25:45 +0100Ariakenom_(~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
2020-11-02 15:26:32 +0100andi-(~andi-@NixOS/user/andi-)
2020-11-02 15:26:59 +0100 <idnar> merijn: yeah, my comment was firmly tongue-in-cheek :)
2020-11-02 15:27:00 +0100 <dminuoso> I mean if you use it for Proxy, then TypeApplications is completely benign and great. If its internal, well you have enough weapons to hurt yourself anyway, but for public API its best to just use Proxy
2020-11-02 15:27:02 +0100 <dminuoso> oh
2020-11-02 15:27:32 +0100 <dminuoso> idnar: Its interesting how Haskell seems to be split into two kinds of people
2020-11-02 15:27:54 +0100 <dminuoso> Those who progressively end up with nearly all extensions enabled, and those who fight against any extension.
2020-11-02 15:28:00 +0100 <dminuoso> I seem to belong to the former group
2020-11-02 15:28:09 +0100 <dminuoso> Rarey do I have a module with less than 8 extensions...
2020-11-02 15:28:45 +0100 <dminuoso> TypeFamilies, ScopedTypeVariables, RankNTypes are currently my favourite ones..
2020-11-02 15:29:05 +0100 <davean> I'm kinda in the middle
2020-11-02 15:29:15 +0100 <idnar> I ran into an awkward spot with GADTs and skolems where I had to use a proxy to make it work
2020-11-02 15:30:01 +0100 <dminuoso> % let f = id in f @Int 1
2020-11-02 15:30:01 +0100 <yahb> dminuoso: ; <interactive>:329:15: error:; * Cannot apply expression of type `a0 -> a0'; to a visible type argument `Int'; * In the expression: f @Int 1; In the expression: let f = id in f @Int 1; In an equation for `it': it = let f = id in f @Int 1
2020-11-02 15:30:06 +0100 <dminuoso> It's easy to hit the limits of TA :)
2020-11-02 15:30:58 +0100 <dminuoso> davean: Where do you draw the line?
2020-11-02 15:31:26 +0100 <dminuoso> Are there particular extensions you dont like? Or is there a maximum number of extensions?
2020-11-02 15:31:44 +0100 <merijn> I prefer non-infectious extensions
2020-11-02 15:32:00 +0100 <merijn> i.e. where the consumer of the code doesn't need the extension
2020-11-02 15:32:15 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 15:32:52 +0100yumh(~yumh@mail.xglobe.in) (Ping timeout: 256 seconds)
2020-11-02 15:33:18 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-11-02 15:33:26 +0100 <dminuoso> merijn: Question, do you ever use OverloadedStrings?
2020-11-02 15:33:29 +0100 <dminuoso> say for text
2020-11-02 15:33:41 +0100 <dminuoso> (I know you can use T.pack, but lets face it, who does it)
2020-11-02 15:33:55 +0100 <geekosaur> OerloadedStrings is not something where use internally forces use externally
2020-11-02 15:34:04 +0100 <dminuoso> Ah
2020-11-02 15:34:06 +0100 <merijn> I don't really like it, but yes
2020-11-02 15:34:07 +0100 <geekosaur> it's a convenience externally
2020-11-02 15:35:30 +0100hackageprolude 0.0.0.5 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.5 (saramuse)
2020-11-02 15:35:43 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 265 seconds)
2020-11-02 15:36:27 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com)
2020-11-02 15:36:59 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 15:39:11 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-02 15:39:30 +0100hackageprimitive-unlifted 1.0.0.0 - Primitive GHC types with unlifted types inside https://hackage.haskell.org/package/primitive-unlifted-1.0.0.0 (andrewthad)
2020-11-02 15:39:33 +0100sam___(~sam@187.164.185.81.rev.sfr.net) (Quit: Lost terminal)
2020-11-02 15:41:30 +0100hackagepersistent 2.10.5.3 - Type-safe, multi-backend data serialization. https://hackage.haskell.org/package/persistent-2.10.5.3 (parsonsmatt)
2020-11-02 15:43:14 +0100LKoen_(~LKoen@79.160.9.109.rev.sfr.net)
2020-11-02 15:44:31 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 15:45:32 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net) (Ping timeout: 260 seconds)
2020-11-02 15:47:04 +0100 <bqv> dminuoso: I used to
2020-11-02 15:47:14 +0100 <bqv> I used to avoid every and all extensions
2020-11-02 15:47:24 +0100 <bqv> That meant a lot of pack
2020-11-02 15:47:30 +0100geekosaur(ac3a8c5f@172.58.140.95) (Remote host closed the connection)
2020-11-02 15:47:31 +0100 <bqv> And a lot of unpack
2020-11-02 15:48:02 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-11-02 15:48:05 +0100 <bqv> Sometimes in that order...
2020-11-02 15:48:41 +0100 <dminuoso> bqv: What about packages that impose FlexibleContexts/FlexibleInstances on you?
2020-11-02 15:48:53 +0100 <dminuoso> Especially since 8.10 it's getting increasingly harder to avoid extensions
2020-11-02 15:49:07 +0100 <dminuoso> (The change itself is welcome, but the impact could be undesirable)
2020-11-02 15:49:11 +0100 <bqv> Never had the pleasure of one back then
2020-11-02 15:49:15 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 15:49:54 +0100 <bqv> Nowadays of course, my haskell files come with lists of extensions like I'm ordering á la carte
2020-11-02 15:50:11 +0100 <bqv> If I can't have none, not much point being skiddish
2020-11-02 15:50:24 +0100chaosmasttter(~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 15:50:41 +0100alx741(~alx741@186.178.110.178) (Ping timeout: 268 seconds)
2020-11-02 15:51:05 +0100 <bqv> I would care about portable haskell, but ghc has a pretty unholy monopoly thats really not going anywhere anyway
2020-11-02 15:52:24 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-02 15:56:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 15:56:54 +0100idhugo(~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 258 seconds)
2020-11-02 15:58:48 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas)
2020-11-02 15:59:30 +0100hackagewai-log 0.3.0.0 - A logging middleware for WAI applications https://hackage.haskell.org/package/wai-log-0.3.0.0 (jonathanjouty_scrive)
2020-11-02 16:00:01 +0100notmyname(~notmyname@84.39.116.180) ()
2020-11-02 16:00:34 +0100nkly(~nkly@ip5b40d080.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2020-11-02 16:01:27 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 16:01:49 +0100toorevitimirp(~tooreviti@117.182.183.132) (Remote host closed the connection)
2020-11-02 16:02:28 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Read error: Connection reset by peer)
2020-11-02 16:04:11 +0100PacoV(2d535a95@gateway/web/cgi-irc/kiwiirc.com/ip.45.83.90.149)
2020-11-02 16:04:46 +0100 <PacoV> Hi there.
2020-11-02 16:04:57 +0100alx741(~alx741@186.178.110.193)
2020-11-02 16:05:20 +0100 <yushyin> Hi PacoV
2020-11-02 16:05:42 +0100 <PacoV> I've multiple functions of type "a -> mb" and a list of "[a]".
2020-11-02 16:06:06 +0100 <PacoV> At the moment I do "mapM_ function list" for each function.
2020-11-02 16:06:34 +0100 <PacoV> Is there a way to call every function with the list as arguments (and discard the result)?
2020-11-02 16:07:42 +0100 <dminuoso> PacoV: That's still traverse_/mapM_
2020-11-02 16:08:01 +0100 <dminuoso> traverse ($ xs) [f, g, h]
2020-11-02 16:08:04 +0100 <dminuoso> traverse_ ($ xs) [f, g, h]
2020-11-02 16:08:43 +0100 <dminuoso> % traverse_ ($ "foo") [putStr, putStr, putStr]
2020-11-02 16:08:43 +0100 <yahb> dminuoso: foofoofoo
2020-11-02 16:08:45 +0100sveit(~sveit@2001:19f0:ac01:247:5400:ff:fe5c:689f) (Quit: Bye)
2020-11-02 16:08:49 +0100 <PacoV> Ok, I'll have a look at traverse.
2020-11-02 16:08:56 +0100 <merijn> dminuoso: That's just a single item, though, not a list of items
2020-11-02 16:09:00 +0100 <dminuoso> PacoV: traverse/traverse_ are just mapM/mapM_
2020-11-02 16:09:13 +0100 <PacoV> Ho, so, not enough.
2020-11-02 16:09:16 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-02 16:09:17 +0100 <merijn> :t \fs as -> mapM_ (sequence fs) as
2020-11-02 16:09:18 +0100 <lambdabot> (Monad m, Traversable m, Foldable t) => m (a -> b) -> t a -> m ()
2020-11-02 16:09:22 +0100 <dminuoso> merijn: huh?
2020-11-02 16:09:22 +0100 <merijn> boom
2020-11-02 16:09:29 +0100texasmynsted(~texasmyns@212.102.45.115)
2020-11-02 16:09:33 +0100 <merijn> dminuoso: He wants to apply a list of functions to a list of values
2020-11-02 16:09:52 +0100 <dminuoso> Guess there's two ways to read this..
2020-11-02 16:10:21 +0100 <merijn> % mapM_ (sequence [print, print]) [1..5]
2020-11-02 16:10:22 +0100 <yahb> merijn: ; <interactive>:331:1: error:; * Could not deduce: Item (m (a0 -> b0)) ~ (a1 -> IO ()); from the context: (Monad m, Traversable m, Show a, IsList (m (a2 -> b)), IsList (t a2), Num (Item (t a2)), Enum (Item (t a2)), Foldable t, Item (m (a2 -> b)) ~ (a -> IO ())); bound by the inferred type for `it':; forall (m :: * -> *) a a2 b (t :: * -> *). (Monad m, Traversable m,
2020-11-02 16:10:58 +0100 <merijn> ugh, how do I reset yahb?
2020-11-02 16:11:10 +0100 <dminuoso> It's ghci
2020-11-02 16:11:11 +0100sveit(~sveit@45.77.0.246)
2020-11-02 16:11:12 +0100 <dminuoso> So :q
2020-11-02 16:11:16 +0100 <merijn> % :q
2020-11-02 16:11:16 +0100 <yahb> merijn:
2020-11-02 16:11:18 +0100 <merijn> % mapM_ (sequence [print, print]) [1..5]
2020-11-02 16:11:20 +0100 <yahb> merijn: [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()]
2020-11-02 16:11:37 +0100 <merijn> that's not right..
2020-11-02 16:12:00 +0100 <dminuoso> well..
2020-11-02 16:12:05 +0100 <merijn> :t sequence [print, print]
2020-11-02 16:12:07 +0100 <lambdabot> Show a => a -> [IO ()]
2020-11-02 16:12:13 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de)
2020-11-02 16:12:14 +0100 <merijn> ah
2020-11-02 16:12:15 +0100 <dminuoso> this is just ap..
2020-11-02 16:12:35 +0100 <merijn> % mapM_ (sequence_ [print, print]) [1..5]
2020-11-02 16:12:35 +0100 <yahb> merijn: ; <interactive>:2:8: error:; * Couldn't match type `()' with `m b0'; Expected type: a0 -> m b0; Actual type: a0 -> (); * In the first argument of `mapM_', namely `(sequence_ [print, print])'; In the expression: mapM_ (sequence_ [print, print]) [1 .. 5]; In an equation for `it': it = mapM_ (sequence_ [print, print]) [1 .. 5]; * Relevant bindings include it :: m () (bou
2020-11-02 16:12:49 +0100 <dminuoso> % sequence ([print, print] <$> [1...5])
2020-11-02 16:12:49 +0100 <yahb> dminuoso: ; <interactive>:3:11: error:; * Couldn't match expected type `Over p0 f0 s0 t0 a1 b0 -> m a' with actual type `[a0 -> IO ()]'; * In the first argument of `(<$>)', namely `[print, print]'; In the first argument of `sequence', namely `([print, print] <$> [1 ... 5])'; In the expression: sequence ([print, print] <$> [1 ... 5]); * Relevant bindings include it :: m [a] (bound at <inter
2020-11-02 16:12:50 +0100 <PacoV> It looks just about what I need.
2020-11-02 16:12:50 +0100 <merijn> ok, I give up on making it work :p
2020-11-02 16:13:06 +0100 <dminuoso> % sequence ([print, print] <*> [1...5])
2020-11-02 16:13:06 +0100 <yahb> dminuoso: ; <interactive>:4:12: error:; * No instance for (Show (Over p0 f0 s0 t0 a0 b0)) arising from a use of `print'; (maybe you haven't applied a function to enough arguments?); * In the expression: print; In the first argument of `(<*>)', namely `[print, print]'; In the first argument of `sequence', namely `([print, print] <*> [1 ... 5])'; <interactive>:4:31: error:; * No insta
2020-11-02 16:13:13 +0100 <PacoV> Thanks!
2020-11-02 16:13:15 +0100 <dminuoso> huh
2020-11-02 16:13:21 +0100 <dminuoso> % sequence ([print, print] <*> [1...5] :: [Int])
2020-11-02 16:13:21 +0100 <yahb> dminuoso: ; <interactive>:5:11: error:; * Couldn't match type `IO ()' with `Int'; Expected type: [Int]; Actual type: [IO ()]; * In the first argument of `sequence', namely `([print, print] <*> [1 ... 5] :: [Int])'; In the expression: sequence ([print, print] <*> [1 ... 5] :: [Int]); In an equation for `it': it = sequence ([print, print] <*> [1 ... 5] :: [Int]); <interactive>:5:11:
2020-11-02 16:13:26 +0100 <dminuoso> *shrugs*
2020-11-02 16:13:37 +0100TheScoop(~TheScoop@unaffiliated/tryte) (Quit: _)
2020-11-02 16:13:39 +0100 <dminuoso> merijn: makes you wonder how we get anything done, if we cant even solve beginner problems
2020-11-02 16:13:49 +0100 <merijn> I'd just use bindings :p
2020-11-02 16:14:02 +0100 <dminuoso> and probably not structure your code to end up in that place
2020-11-02 16:14:14 +0100texasmynsted(~texasmyns@212.102.45.115) (Ping timeout: 256 seconds)
2020-11-02 16:14:16 +0100 <dminuoso> I've never written sequence anywhere
2020-11-02 16:14:44 +0100alp(~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3) (Ping timeout: 268 seconds)
2020-11-02 16:14:45 +0100 <dminuoso> Indeed, none of my haskell projects have a single occurence of i
2020-11-02 16:16:21 +0100 <dminuoso> % :t sequence_ $ [putStr, putStr] <*> ["foo","bar"] -- merijn
2020-11-02 16:16:22 +0100 <yahb> dminuoso: IO ()
2020-11-02 16:16:23 +0100 <dminuoso> Did you mean that?
2020-11-02 16:16:36 +0100 <merijn> no
2020-11-02 16:16:50 +0100 <merijn> The problem is that I meant a double sequence or something weird
2020-11-02 16:16:54 +0100 <dminuoso> Then I really dont understand what you're trying to write
2020-11-02 16:17:02 +0100 <merijn> :t sequence_ . sequence [print, print]
2020-11-02 16:17:04 +0100 <lambdabot> Show a => a -> IO ()
2020-11-02 16:17:08 +0100 <merijn> That
2020-11-02 16:17:09 +0100 <dminuoso> huh
2020-11-02 16:17:11 +0100 <dminuoso> % :t sequence_ [print, print]
2020-11-02 16:17:11 +0100 <yahb> dminuoso: Show a => a -> ()
2020-11-02 16:17:19 +0100 <dminuoso> % :t sequence_
2020-11-02 16:17:19 +0100 <yahb> dminuoso: (Foldable t, Monad m) => t (m a) -> m ()
2020-11-02 16:17:30 +0100 <dminuoso> oh
2020-11-02 16:17:36 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 258 seconds)
2020-11-02 16:17:50 +0100 <merijn> First one for the "a ->", second for the internal IO
2020-11-02 16:17:51 +0100 <dminuoso> % :t sequence [print, print]
2020-11-02 16:17:52 +0100 <yahb> dminuoso: Show a => a -> [IO ()]
2020-11-02 16:17:53 +0100 <dminuoso> Right
2020-11-02 16:18:33 +0100 <dminuoso> but how exactly is that different from
2020-11-02 16:18:36 +0100 <dminuoso> % :t sequence_ $ [putStr, putStr] <*> ["foo","bar"]
2020-11-02 16:18:37 +0100 <yahb> dminuoso: IO ()
2020-11-02 16:18:52 +0100 <dminuoso> In both cases you generate the cartesian product
2020-11-02 16:19:00 +0100 <dminuoso> apply, and then sequence
2020-11-02 16:19:15 +0100 <dminuoso> yours is just a bit more hidden
2020-11-02 16:19:54 +0100daydaynatation(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2020-11-02 16:20:29 +0100jokester(~mono@unaffiliated/jokester) (Quit: WeeChat 2.8)
2020-11-02 16:21:11 +0100twk-(~thewormki@unaffiliated/twk-) (Ping timeout: 272 seconds)
2020-11-02 16:21:49 +0100Tario(~Tario@200.119.184.48) (Ping timeout: 246 seconds)
2020-11-02 16:23:27 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 16:24:23 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-02 16:24:38 +0100khaladrogo_786(~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7)
2020-11-02 16:24:42 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de)
2020-11-02 16:25:00 +0100 <daydaynatation> Are there any sort function on Data.Array?
2020-11-02 16:25:10 +0100 <bqv> But its pointfree
2020-11-02 16:25:39 +0100 <PacoV> Okay, I'll use dminuoso's version as the "m ()" has the right type in the end.
2020-11-02 16:27:43 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
2020-11-02 16:27:59 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 16:28:06 +0100PacoV(2d535a95@gateway/web/cgi-irc/kiwiirc.com/ip.45.83.90.149) (Quit: thanks!)
2020-11-02 16:28:25 +0100 <daydaynatation> Just found out that there is no sort function for Vector neither...
2020-11-02 16:28:32 +0100christo(~chris@81.96.113.213)
2020-11-02 16:28:50 +0100 <merijn> daydaynatation: You want vector-algorithms :)
2020-11-02 16:28:56 +0100 <merijn> @hackage vector-algorithms
2020-11-02 16:28:57 +0100 <lambdabot> https://hackage.haskell.org/package/vector-algorithms
2020-11-02 16:29:04 +0100 <daydaynatation> ah ha
2020-11-02 16:29:09 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-02 16:29:23 +0100 <daydaynatation> merijn: how about array-algorithms? does it exist?
2020-11-02 16:29:29 +0100 <merijn> No clue
2020-11-02 16:29:58 +0100 <merijn> Unless you need generalised indexing via Ix vector is generally better
2020-11-02 16:30:20 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 265 seconds)
2020-11-02 16:30:33 +0100 <daydaynatation> I'm just doing some comparison between Haskell and C++, for learning's sake
2020-11-02 16:31:01 +0100 <daydaynatation> I guess Haskell's array is way too different from C++ array
2020-11-02 16:31:06 +0100 <merijn> daydaynatation: right, if you just want 1D arrays/vector like C/C++ then you probably want vector
2020-11-02 16:31:28 +0100cohn(~noone@unaffiliated/cohn) ()
2020-11-02 16:31:46 +0100LeanderK(~textual@46.183.103.17)
2020-11-02 16:32:04 +0100LeanderK(~textual@46.183.103.17) (Client Quit)
2020-11-02 16:32:34 +0100jespada(~jespada@90.254.245.49)
2020-11-02 16:33:36 +0100 <daydaynatation> btw, does cabal hell still exits? I use ghcup to install ghc and cabal and then cabal install everything in the global scope. Is this the usual way of installing packagings with cabal? or do people cabal install some kind of sandbox
2020-11-02 16:34:07 +0100khaladrogo_786(~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7) (Quit: Leaving)
2020-11-02 16:34:17 +0100twk-(~thewormki@unaffiliated/twk-)
2020-11-02 16:35:00 +0100Amras(~Amras@unaffiliated/amras0000)
2020-11-02 16:35:01 +0100 <merijn> daydaynatation: Actual cabal hell has been gone for close to a decade. What people *now* call cabal hell is simply "I'm depending on ancient unmaintained packages and the dependency solver can't find a solution", which doesn't really have a solution
2020-11-02 16:35:23 +0100 <bqv> With nix, you can jailbreak...
2020-11-02 16:35:24 +0100xff0x(~fox@2001:1a81:537c:3e00:725d:2adb:f456:fdfe) (Ping timeout: 240 seconds)
2020-11-02 16:35:38 +0100 <merijn> daydaynatation: As for sandboxing individual projects, as of cabal-install 3.0 that is unncecessary
2020-11-02 16:35:40 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 16:35:48 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2020-11-02 16:36:21 +0100 <maerwald> you can use stack2cabal too
2020-11-02 16:36:23 +0100 <merijn> daydaynatation: Basically, every installed package is tagged with a hash of its source, exact version and compile flags, and the hashes of it's transitive dependencies
2020-11-02 16:36:23 +0100 <daydaynatation> Wow, great to know! So I just cabal install globally and it just works? Nix is too complicated
2020-11-02 16:36:30 +0100xff0x(~fox@2001:1a81:537c:3e00:d3d4:b70f:c4f2:86e2)
2020-11-02 16:36:32 +0100 <maerwald> @hackage stack2cabal
2020-11-02 16:36:32 +0100 <lambdabot> https://hackage.haskell.org/package/stack2cabal
2020-11-02 16:36:44 +0100 <merijn> daydaynatation: So you can have infinitely many different configurations/versions of the same package installed
2020-11-02 16:36:47 +0100 <maerwald> in case you can't build with cabal
2020-11-02 16:37:43 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2020-11-02 16:37:56 +0100andreas31(~andreas@gateway/tor-sasl/andreas303)
2020-11-02 16:40:05 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 16:40:10 +0100 <merijn> daydaynatation: cabal-install will select the right/matching versions from the global store when building a project. So you end up with builds happening "as if" they're in a sandbox, except you don't need to manage sandboxes/virtualenvs, as they all share a single global store
2020-11-02 16:40:46 +0100 <merijn> daydaynatation: See also https://cabal.readthedocs.io/en/latest/nix-local-build-overview.html (despite the nix url, doesn't actually have anything to with nix other than "the general idea")
2020-11-02 16:41:16 +0100 <merijn> (note that the v2- prefix is optional in cabal 3.0 and later, as all the commands default to v2-)
2020-11-02 16:41:29 +0100 <yushyin> yes, it's misleading
2020-11-02 16:41:33 +0100 <daydaynatation> Thanks!
2020-11-02 16:41:42 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-11-02 16:42:04 +0100 <merijn> yushyin: Patches welcome ;)
2020-11-02 16:42:12 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2020-11-02 16:42:12 +0100 <dolio> What's misleading?
2020-11-02 16:42:15 +0100alp(~alp@2a01:e0a:58b:4920:60be:9d51:3099:266d)
2020-11-02 16:42:16 +0100 <yushyin> the name
2020-11-02 16:42:39 +0100 <merijn> dolio: "nix local builds" tends to mislead people into thinking it's about Nix
2020-11-02 16:42:48 +0100khaladrogo(~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7) (Remote host closed the connection)
2020-11-02 16:42:50 +0100 <dolio> It says "nix-style local builds".
2020-11-02 16:42:58 +0100 <merijn> dolio: Not in the url
2020-11-02 16:43:14 +0100 <dolio> Maybe read the actual page instead of just the url.
2020-11-02 16:43:35 +0100 <merijn> dolio: And even nix-style has repeatedly led to confusion here
2020-11-02 16:45:36 +0100TheScoop(~TheScoop@unaffiliated/tryte)
2020-11-02 16:45:39 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-jbpkroausxoplpus)
2020-11-02 16:45:40 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:bd58:898c:9e9d:d049)
2020-11-02 16:46:12 +0100 <yushyin> but is there a better and more descriptive name? I have no idea.
2020-11-02 16:46:32 +0100 <bqv> Nix is popular in haskell anyway, no?
2020-11-02 16:46:58 +0100 <merijn> bqv: eh...
2020-11-02 16:47:11 +0100 <merijn> bqv: There's certainly a very vocal group of fans :)
2020-11-02 16:47:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-02 16:47:29 +0100 <merijn> I wouldn't say they're remotely close to a majority, though
2020-11-02 16:47:40 +0100sdrodge(~sdrodge@unaffiliated/sdrodge) (Ping timeout: 256 seconds)
2020-11-02 16:47:50 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 16:47:53 +0100 <dolio> I think a lot of people like the vague idea, and the implementation in cabal is likely to be preferable for most people.
2020-11-02 16:47:55 +0100 <bqv> The nix folk make it seem like haskell's rife with nixerse..
2020-11-02 16:48:26 +0100 <merijn> dolio: I like the *idea* of Nix, they're making it very hard to like the *execution* of Nix, though ;)
2020-11-02 16:48:46 +0100 <dolio> Right, that's what I was getting at. :)
2020-11-02 16:49:10 +0100 <merijn> I wish someone would make Nix, but like, not sucking :p
2020-11-02 16:49:12 +0100 <bqv> Believe me I agree...
2020-11-02 16:49:58 +0100 <yushyin> cabal v2-* works well for me, I am quite happy with it
2020-11-02 16:50:02 +0100 <bqv> But the way I normally phrase it, I like nix, I just hate nixpkgs and nixos
2020-11-02 16:50:11 +0100son0p(~son0p@181.136.122.143)
2020-11-02 16:50:11 +0100 <dolio> Of course, the cabal one only really does anything for Haskell things.
2020-11-02 16:50:18 +0100 <bqv> But sadly nothing compares and I have stockholm syndrome
2020-11-02 16:52:29 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
2020-11-02 16:52:55 +0100ddellacosta(~dd@86.106.121.168)
2020-11-02 16:52:56 +0100 <chreekat[m]> It's the other way around maybe - lots of Haskellers active in Nix community as well
2020-11-02 16:53:15 +0100 <dolio> bqv: I've heard some of the Haskell power users complaining about the language as well.
2020-11-02 16:53:29 +0100 <dolio> Although I couldn't give specifics myself.
2020-11-02 16:54:02 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 16:54:06 +0100 <tdammers> I think the most common complaint about nix-the-language is that it's thoroughly untyped
2020-11-02 16:54:19 +0100christo(~chris@81.96.113.213)
2020-11-02 16:54:29 +0100 <chreekat[m]> E.g. The nixpkgs support for Haskell has had a lot of work put into it, and it's not even the only implementation available
2020-11-02 16:54:53 +0100 <tdammers> and that that makes it really hard to make things discoverable
2020-11-02 16:55:03 +0100 <monochrom> In an alternate universe, the nix language is thoroughly typed. In ##scheme, they complain that it's thoroughly typed. :)
2020-11-02 16:55:15 +0100cohn(~noone@unaffiliated/cohn)
2020-11-02 16:55:22 +0100pixel_(~pixel_@84.39.116.180)
2020-11-02 16:55:27 +0100idhugo(~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
2020-11-02 16:55:51 +0100 <tdammers> IME, lispers tend to have marginally higher tolerance for typed languages than haskellers have for untyped languages
2020-11-02 16:56:09 +0100 <dolio> I don't think it was about types. It was about some inconsistencies with how things worked or something. Special cases that would confuse people.
2020-11-02 16:56:34 +0100 <tdammers> some of that is linked to the unitypedness though
2020-11-02 16:56:38 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 16:56:40 +0100 <dsal> It's a weird language, for sure.
2020-11-02 16:56:54 +0100 <chreekat[m]> My complaint is the thoroughgoing reliance on fix points for enabling extension. I mean, i don't really have a better idea, but i grokked monads well before i grokked fixpoints, and they still bend my head some. Error messages suffer, too
2020-11-02 16:56:57 +0100 <tdammers> personally, I think making an entirely new language for this was a mistake
2020-11-02 16:57:46 +0100 <chreekat[m]> I guess if it still bends my head, i don't actually grok them :)
2020-11-02 16:58:03 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit)
2020-11-02 16:58:05 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
2020-11-02 16:58:23 +0100 <tdammers> packaging things for, well, any platform really, is not something most developers love to do, it's something we want to get over with ASAP. having to learn an entire programming language, and a badly documented one at that, creates a harsh barrier
2020-11-02 16:58:50 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:bd58:898c:9e9d:d049) (Quit: Leaving)
2020-11-02 16:58:58 +0100 <dolio> Well, I can tell you that not inventing a new language doesn't avoid that part. :)
2020-11-02 16:59:06 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer)
2020-11-02 16:59:23 +0100 <monochrom> I haven't studied nix. But if enabling extensions is equivalent to OOP subclassing and virtual methods and late binding, then semantically a fix point (over open recursion, even) is necessary. What you can argue over is whether the syntax should expose or hide this fact.
2020-11-02 16:59:37 +0100khaladrogo(~khaladrog@2409:4071:228e:e077:f1ab:1e40:6c9b:8f55)
2020-11-02 16:59:50 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 16:59:55 +0100 <tdammers> an entirely new language *can* be the right choice, but it has to pull its weight and be completely non-frightening
2020-11-02 17:00:26 +0100Rudd0(~Rudd0@185.189.115.103)
2020-11-02 17:00:59 +0100aarvar(~foewfoiew@50.35.43.33)
2020-11-02 17:01:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2020-11-02 17:01:49 +0100motherfsck(~motherfsc@unaffiliated/motherfsck)
2020-11-02 17:04:06 +0100 <maerwald> tdammers: packaging requires more discipline than the average programming imo. Having followed NixOS from its early beginnings, my opinion is that it never reached a critical mass of quality dedicated packagers
2020-11-02 17:04:22 +0100 <maerwald> much more drive by contributions
2020-11-02 17:04:49 +0100 <dolio> I'm mainly thinking of SBT in Scala, which was an embedded language in Scala, but it was pretty hard to figure out how to do anything that didn't happen automatically.
2020-11-02 17:04:52 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-02 17:06:18 +0100 <dolio> Because the documentation didn't really tell you how.
2020-11-02 17:07:31 +0100hackagehakyll-typescript 0.0.2.0 - Typescript and javascript hakyll compilers. https://hackage.haskell.org/package/hakyll-typescript-0.0.2.0 (jhmcstanton)
2020-11-02 17:07:50 +0100khaladrogo(~khaladrog@2409:4071:228e:e077:f1ab:1e40:6c9b:8f55) (Ping timeout: 264 seconds)
2020-11-02 17:09:36 +0100knupfer(~Thunderbi@200116b82c45b300601996fffe927128.dip.versatel-1u1.de)
2020-11-02 17:09:43 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-02 17:10:01 +0100knupfer(~Thunderbi@200116b82c45b300601996fffe927128.dip.versatel-1u1.de) (Remote host closed the connection)
2020-11-02 17:10:15 +0100knupfer(~Thunderbi@200116b82c45b300ad86251a82d2e82c.dip.versatel-1u1.de)
2020-11-02 17:10:35 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-11-02 17:10:40 +0100bscarlet(~benjamin@forest.greynode.net)
2020-11-02 17:11:03 +0100_xor(~xor@74.215.46.133) (Read error: Connection reset by peer)
2020-11-02 17:11:49 +0100mastarija(~mastarija@93-136-211-205.adsl.net.t-com.hr)
2020-11-02 17:12:09 +0100_xor(~xor@74.215.46.133)
2020-11-02 17:13:37 +0100_xor(~xor@74.215.46.133) (Read error: Connection reset by peer)
2020-11-02 17:13:56 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2020-11-02 17:14:22 +0100_xor(~xor@74.215.46.133)
2020-11-02 17:21:07 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 17:21:44 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-11-02 17:22:11 +0100tauli(~textual@185.213.155.161)
2020-11-02 17:22:26 +0100u0_a298(~user@47.206.148.226)
2020-11-02 17:23:51 +0100mastarija(~mastarija@93-136-211-205.adsl.net.t-com.hr) (Quit: Leaving)
2020-11-02 17:24:00 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 17:24:00 +0100 <tauli> Does anyone know where cabal get's the authors name and email from when initialising a new package? doesn't seem to be in .cabal/config
2020-11-02 17:24:28 +0100 <monochrom> .gitconfig
2020-11-02 17:25:12 +0100bitmagie(~Thunderbi@200116b806d43f002c1b74646a240ada.dip.versatel-1u1.de)
2020-11-02 17:25:18 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
2020-11-02 17:27:00 +0100 <tauli> do i have to refresh some cache? changed ~/.gitconfig but cabal still writes the old email adress
2020-11-02 17:27:29 +0100 <tauli> am on macOS with cabal 3.2.0.0
2020-11-02 17:27:44 +0100alp(~alp@2a01:e0a:58b:4920:60be:9d51:3099:266d) (Ping timeout: 240 seconds)
2020-11-02 17:27:54 +0100 <monochrom> works for me
2020-11-02 17:28:36 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-11-02 17:28:38 +0100enikar(~enikar@chezlefab.net) (Quit: WeeChat 2.3)
2020-11-02 17:28:38 +0100munsel(~munsel@v22018094214772867.hotsrv.de)
2020-11-02 17:28:41 +0100coot(~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-02 17:28:54 +0100enikar(~enikar@2001:41d0:2:8673::42)
2020-11-02 17:29:04 +0100bitmagie(~Thunderbi@200116b806d43f002c1b74646a240ada.dip.versatel-1u1.de) (Client Quit)
2020-11-02 17:29:31 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-02 17:29:31 +0100 <c_wraith> tauli: does `git config user.name` show the changed version?
2020-11-02 17:30:11 +0100 <tauli> it's `git config user.email` but yes, that's changed
2020-11-02 17:30:42 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-11-02 17:31:38 +0100 <tauli> ok, changing user works, but not with the email address
2020-11-02 17:31:38 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-02 17:31:53 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-11-02 17:32:02 +0100 <tauli> maintainer in the .cabal is set to some old mail address
2020-11-02 17:32:39 +0100 <monochrom> OK I didn't test maintainer. I tested cabal init.
2020-11-02 17:33:10 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 265 seconds)
2020-11-02 17:33:10 +0100 <monochrom> Oh, that's maintainer.
2020-11-02 17:33:32 +0100 <tauli> yep, when i do `cabal init` the maintainer field of the generated .cabal file is set some old mail address i don't know where cabal get's that from
2020-11-02 17:35:34 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-02 17:35:57 +0100u0_a298(~user@47.206.148.226)
2020-11-02 17:36:05 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 17:38:29 +0100christo(~chris@81.96.113.213)
2020-11-02 17:38:56 +0100raichoo(~raichoo@dslb-092-073-210-010.092.073.pools.vodafone-ip.de)
2020-11-02 17:39:08 +0100xerox_(~xerox@unaffiliated/xerox)
2020-11-02 17:40:11 +0100 <tomsmeding> tauli: also `git config --global user.email`?
2020-11-02 17:40:21 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 17:40:26 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 17:41:21 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 17:41:42 +0100christo(~chris@81.96.113.213)
2020-11-02 17:41:53 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-02 17:42:06 +0100 <tomsmeding> you can also run `strace -f -o log.txt cabal init` and search the produced log.txt for "gitconfig" to see which file it's using
2020-11-02 17:42:19 +0100 <tomsmeding> (assuming linux; dtruss on mac, no idea on windows)
2020-11-02 17:42:42 +0100mrchampion(~mrchampio@216-211-57-41.dynamic.tbaytel.net) (Ping timeout: 258 seconds)
2020-11-02 17:42:47 +0100 <tomsmeding> (oh you said macOS; something something dtruss :p )
2020-11-02 17:44:01 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 17:44:26 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-02 17:45:46 +0100mrchampion(~mrchampio@216-211-57-41.dynamic.tbaytel.net)
2020-11-02 17:45:55 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 17:47:00 +0100hackagehakaru 0.7.0 - A probabilistic programming language https://hackage.haskell.org/package/hakaru-0.7.0 (z)
2020-11-02 17:47:08 +0100sfvm(~sfvm@37.228.215.148)
2020-11-02 17:47:46 +0100christo(~chris@81.96.113.213)
2020-11-02 17:47:48 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 17:47:51 +0100akad_(~akad@109107030050.radomsko.vectranet.pl)
2020-11-02 17:48:31 +0100LKoen_(~LKoen@79.160.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-02 17:49:45 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de)
2020-11-02 17:49:51 +0100Neo--(~neo@188-230-154-134.dynamic.t-2.net) (Remote host closed the connection)
2020-11-02 17:50:10 +0100 <tauli> the culprint was ~/.darcs/author
2020-11-02 17:50:18 +0100 <tauli> thanks for all the pointers
2020-11-02 17:50:19 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 17:50:39 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 17:51:07 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 260 seconds)
2020-11-02 17:51:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-02 17:51:21 +0100 <Uniaika> /7
2020-11-02 17:53:32 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 17:54:42 +0100christo(~chris@81.96.113.213)
2020-11-02 17:55:25 +0100nkly(~nkly@ip5b40d080.dynamic.kabel-deutschland.de)
2020-11-02 17:55:27 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-02 17:56:04 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2020-11-02 17:57:02 +0100flatmap(~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de)
2020-11-02 17:57:44 +0100Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 240 seconds)
2020-11-02 17:57:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 17:59:01 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 17:59:05 +0100khaladrogo(~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55)
2020-11-02 17:59:05 +0100geekosaur(ac3a8c2c@172.58.140.44)
2020-11-02 17:59:23 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 17:59:46 +0100psygate(~psygate@unaffiliated/psygate)
2020-11-02 18:02:37 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-02 18:03:05 +0100u0_a298(~user@47.206.148.226)
2020-11-02 18:04:31 +0100khaladrogo_lite(~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55)
2020-11-02 18:05:39 +0100christo(~chris@81.96.113.213)
2020-11-02 18:06:05 +0100andreas31(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2020-11-02 18:06:19 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 18:07:51 +0100nekomune(~nekomune@comfy.moe) (Quit: ZNC 1.7.2 - https://znc.in)
2020-11-02 18:08:47 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-02 18:09:14 +0100andreas31(~andreas@gateway/tor-sasl/andreas303)
2020-11-02 18:09:19 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 18:10:11 +0100 <tdammers> maerwald: exactly. packaging is hard and thankless work - it needs to be made as painless as possible
2020-11-02 18:10:57 +0100lucas(49440e68@c-73-68-14-104.hsd1.ma.comcast.net)
2020-11-02 18:11:12 +0100christo(~chris@81.96.113.213)
2020-11-02 18:11:14 +0100 <maerwald> yes, thats why most distros strictly separate configuration from packaging. In nix, its all the same
2020-11-02 18:12:00 +0100lucas(49440e68@c-73-68-14-104.hsd1.ma.comcast.net) (Remote host closed the connection)
2020-11-02 18:12:01 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 18:12:11 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-02 18:12:39 +0100christo(~chris@81.96.113.213)
2020-11-02 18:15:35 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 18:16:39 +0100conal(~conal@198.8.81.68) (Quit: Computer has gone to sleep.)
2020-11-02 18:17:12 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 18:19:40 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 18:20:24 +0100christo(~chris@81.96.113.213)
2020-11-02 18:21:47 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-02 18:21:53 +0100alp(~alp@2a01:e0a:58b:4920:ad5c:a549:2a77:a525)
2020-11-02 18:22:01 +0100coot(~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl)
2020-11-02 18:22:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 18:22:37 +0100darjeeling_(~darjeelin@115.215.40.228) (Ping timeout: 260 seconds)
2020-11-02 18:23:01 +0100darjeeling_(~darjeelin@115.215.40.228)
2020-11-02 18:24:29 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
2020-11-02 18:24:52 +0100christo(~chris@81.96.113.213) (Ping timeout: 258 seconds)
2020-11-02 18:27:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-02 18:28:13 +0100conal(~conal@198.8.81.68)
2020-11-02 18:28:42 +0100 <dsal> It's just that all other systems are so much worse.
2020-11-02 18:29:01 +0100hackagehnix 0.11.0 - Haskell implementation of the Nix language https://hackage.haskell.org/package/hnix-0.11.0 (AntonLatukha)
2020-11-02 18:30:49 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 18:31:44 +0100geekosaur(ac3a8c2c@172.58.140.44) (Ping timeout: 245 seconds)
2020-11-02 18:31:59 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 18:33:54 +0100christo(~chris@81.96.113.213)
2020-11-02 18:34:57 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 18:35:30 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 18:36:02 +0100 <maerwald> dsal: did you use another system?
2020-11-02 18:36:19 +0100 <maerwald> (most of them are proprietary)
2020-11-02 18:36:39 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net)
2020-11-02 18:36:47 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 18:37:21 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-02 18:37:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 18:37:57 +0100bennofs1(~benno@dslb-188-106-234-230.188.106.pools.vodafone-ip.de)
2020-11-02 18:38:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 18:39:02 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-02 18:41:19 +0100 <dsal> I've used tons of different unix systems since the 90s.
2020-11-02 18:41:37 +0100ubert1(~Thunderbi@p200300ecdf1e530be6b318fffe838f33.dip0.t-ipconnect.de)
2020-11-02 18:42:07 +0100 <dsal> nix is weird from a unix perspective, but it's super nice from a packaging perspective. docker is popular these days, but gross in many ways, including just not being great software.
2020-11-02 18:42:29 +0100 <monochrom> I no longer ask for great software.
2020-11-02 18:42:44 +0100ubert(~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 18:42:44 +0100ubert1ubert
2020-11-02 18:42:50 +0100 <yushyin> monochrom: you just write it yourself? ;)
2020-11-02 18:42:53 +0100 <dsal> I end up just writing all my own software these days because everything is just so depressingly bad.
2020-11-02 18:43:01 +0100 <monochrom> Nah, I don't write great software either.
2020-11-02 18:44:02 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:c4b9:178f:4076:90ef)
2020-11-02 18:44:02 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 18:44:19 +0100 <dsal> There are a few bits of software I use that actually seem pretty good. Even then, a little questionable. Given its complexity, Ableton Live does a pretty good job. I don't think I could write something similar. But there are so many of these javascript things like zigbee2mqtt that just barely work well enough that I can not think about them most of the time.
2020-11-02 18:46:32 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-02 18:46:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 18:46:59 +0100u0_a298(~user@47.206.148.226)
2020-11-02 18:48:49 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 18:50:05 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-11-02 18:50:53 +0100meowphius(~meowphius@pool-96-237-166-172.bstnma.fios.verizon.net) (Ping timeout: 260 seconds)
2020-11-02 18:51:39 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 18:51:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 18:52:40 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 272 seconds)
2020-11-02 18:54:47 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-02 18:55:39 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-02 18:56:02 +0100u0_a298(~user@47.206.148.226)
2020-11-02 18:56:16 +0100atk(~Arch-TK@erebus.the-tk.com) (Changing host)
2020-11-02 18:56:16 +0100atk(~Arch-TK@ircpuzzles/staff/Arch-TK)
2020-11-02 18:56:19 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 18:56:52 +0100jneira(501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250)
2020-11-02 18:57:22 +0100bennofs1(~benno@dslb-188-106-234-230.188.106.pools.vodafone-ip.de) (Quit: WeeChat 2.9)
2020-11-02 18:57:32 +0100lxsameer(lxsameer@gateway/vpn/protonvpn/lxsameer) (Ping timeout: 268 seconds)
2020-11-02 18:58:50 +0100xff0x(~fox@2001:1a81:537c:3e00:d3d4:b70f:c4f2:86e2) (Ping timeout: 264 seconds)
2020-11-02 18:59:22 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.9)
2020-11-02 18:59:42 +0100xff0x(~fox@2001:1a81:537c:3e00:9b11:58b1:f4d:830a)
2020-11-02 19:00:02 +0100pixel_(~pixel_@84.39.116.180) ()
2020-11-02 19:01:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 19:01:29 +0100rotty(rotty@ghost.xx.vu) (Quit: WeeChat 3.0-dev)
2020-11-02 19:02:06 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-02 19:04:20 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2020-11-02 19:04:20 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-02 19:04:51 +0100u0_a298(~user@47.206.148.226)
2020-11-02 19:08:35 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 19:08:35 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-02 19:08:53 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de)
2020-11-02 19:09:06 +0100u0_a298(~user@47.206.148.226)
2020-11-02 19:09:39 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 19:11:37 +0100knupfer(~Thunderbi@200116b82c45b300ad86251a82d2e82c.dip.versatel-1u1.de) (Remote host closed the connection)
2020-11-02 19:11:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2020-11-02 19:11:45 +0100knupfer(~Thunderbi@200116b82c45b300e8f677624452dee1.dip.versatel-1u1.de)
2020-11-02 19:12:09 +0100lxsameer(~lxsameer@unaffiliated/lxsameer)
2020-11-02 19:12:27 +0100invaser(~Thunderbi@31.148.23.125) ()
2020-11-02 19:12:32 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-02 19:12:43 +0100chaosmasttter(~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de)
2020-11-02 19:12:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 19:12:57 +0100 <invaser> Hi, can someone take a look at the problem I have in #haskell-beginners?
2020-11-02 19:13:09 +0100 <invaser> Or I can copy it here
2020-11-02 19:13:14 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2020-11-02 19:14:10 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-11-02 19:14:29 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-11-02 19:14:48 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-11-02 19:15:16 +0100 <gobbleguy> invaser: you can bring it here
2020-11-02 19:15:42 +0100 <gobbleguy> This channel is fine for "beginner" questions, too.
2020-11-02 19:16:45 +0100 <invaser> Ok, so I'm trying to make parser to do this: parse (string "z1" <|> pure "") "" "zet" should be Right "", and not Left ...
2020-11-02 19:17:35 +0100 <invaser> I get why this code doesn't what I want it to, because it's already read "z" and exception arises only on second char
2020-11-02 19:17:50 +0100 <dminuoso> invaser: parsec does not backtrack by default
2020-11-02 19:18:01 +0100 <dminuoso> Wrap the left part in `try (...)`
2020-11-02 19:18:33 +0100 <invaser> a-ha, it's `try`, tyty
2020-11-02 19:20:04 +0100 <dminuoso> invaser: So while `l <|> r` encodes a choice for parser combinators, it itself does not guarantee `l` would backtrack on failure (that is "unconsume" already consumed tokens)
2020-11-02 19:20:40 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba)
2020-11-02 19:20:41 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 19:20:46 +0100andreas31(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2020-11-02 19:21:04 +0100 <dminuoso> Some libraries always backtrack by default, others backtrack only certain primitives, and parsec *never* backtracks by default
2020-11-02 19:21:35 +0100 <invaser> dminuoso: So, in layman's terms, it works only when it determines that left parser can't parse the string on the first char?
2020-11-02 19:22:43 +0100 <dminuoso> invaser: Unless you denote the left side can backtrack, say `try l <|> r`
2020-11-02 19:23:02 +0100 <davean> dminuoso: Mostly my stance is I'm entirely willing to turn on extensions but I look for ways not to and have a highish standard for if they improve things. So I'm not in the "limit them like crazy" camp and I'm not "just enable them", I've used almost all the extensions when I had a good reason, but I'm just careful about it and give it a lot of consideration if I'm missing a better way to
2020-11-02 19:23:04 +0100 <davean> approach the problem and if the extension is acting as a crutch to a poor conceptualization of the problem and actually just enabling a more complicated system than is needed (which is often the case)
2020-11-02 19:23:23 +0100cosimone(~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad)
2020-11-02 19:23:55 +0100 <dminuoso> invaser: The fundamental problem is that parser combinators cant do automatic lookahead
2020-11-02 19:24:10 +0100andreas31(~andreas@gateway/tor-sasl/andreas303)
2020-11-02 19:24:21 +0100daveanstares at that statement for a bit.
2020-11-02 19:24:33 +0100 <dminuoso> *monadic!
2020-11-02 19:24:34 +0100 <davean> They certainly don't. I'm not convinced they can't.
2020-11-02 19:24:35 +0100 <dminuoso> ;)
2020-11-02 19:24:47 +0100 <dminuoso> davean: They cant if they are monadic.
2020-11-02 19:24:49 +0100 <monochrom> Oh, monadic, yeah.
2020-11-02 19:24:57 +0100 <dminuoso> With selective or applicative parser combinators you can.
2020-11-02 19:25:05 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 19:25:15 +0100 <davean> dminuoso: You can't *in general* but many of the combinators are selective or applicative.
2020-11-02 19:25:18 +0100 <davean> dminuoso: so sometimes you can.
2020-11-02 19:25:18 +0100 <monochrom> BUT! I have realized that given anyChar, you can stay Applicative for CFG.
2020-11-02 19:25:37 +0100alp(~alp@2a01:e0a:58b:4920:ad5c:a549:2a77:a525) (Ping timeout: 260 seconds)
2020-11-02 19:25:50 +0100 <monochrom> And academically we have found that anyChar needs Selective only, not full monadic.
2020-11-02 19:26:06 +0100 <monochrom> Err sorry! s/anyChar/satisfy/
2020-11-02 19:26:14 +0100 <davean> dminuoso: so saying they can't isn't quite true
2020-11-02 19:26:27 +0100 <davean> dminuoso: Saying there are grammers they can't for is true, but thats kinda always true in a way.
2020-11-02 19:26:41 +0100 <davean> Also not really relivent to most parsers
2020-11-02 19:26:51 +0100 <daydaynatation> in a type class method, if i write aMethod:: (Random a, V.Unbox a) => ... does it mean a needs to by both Random and V.Unbox ? Or a needs to be one Or the other
2020-11-02 19:27:07 +0100 <davean> Both
2020-11-02 19:27:10 +0100 <monochrom> Oh sorry again, haha, full CFG still needs unlimited lookahead. LL(k) are the restricted ones that can be done in fixed lookahead.
2020-11-02 19:27:19 +0100 <davean> For all a such that a is in Random and in Unbox ...
2020-11-02 19:27:29 +0100minus[m](minusblobc@gateway/shell/matrix.org/x-hhdwstlyzyfgkvud)
2020-11-02 19:27:41 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 19:27:47 +0100 <daydaynatation> ok
2020-11-02 19:27:48 +0100 <monochrom> But yeah we really design our grammars to be LL(k), even LL(1), don't we.
2020-11-02 19:28:01 +0100 <davean> monochrom: VERY much so, and on purpose conciously.
2020-11-02 19:28:07 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-11-02 19:28:29 +0100 <monochrom> So yeah most parsers don't even need full-on Applicative. Also, I mean s/Applicative/Alternative/
2020-11-02 19:29:12 +0100 <monochrom> Gosh does IRC allow me to edit past messages? :)
2020-11-02 19:29:29 +0100 <davean> monochrom: No, IRC makes you life with your decisions.
2020-11-02 19:29:39 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 19:29:47 +0100conal(~conal@198.8.81.68) (Quit: Computer has gone to sleep.)
2020-11-02 19:29:53 +0100 <davean> IRC promotes honesty and transparency
2020-11-02 19:29:57 +0100 <davean> not lies and deception.
2020-11-02 19:30:54 +0100 <dminuoso> davean: fair enough
2020-11-02 19:32:04 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 268 seconds)
2020-11-02 19:32:05 +0100conal(~conal@198.8.81.68)
2020-11-02 19:32:13 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-02 19:32:20 +0100 <davean> dminuoso: we have Applicative => Monad and Applicative Do
2020-11-02 19:32:23 +0100 <davean> dminuoso: etc
2020-11-02 19:32:25 +0100 <dminuoso> davean: I mean in principle you could do automatic lookahead inside combinators as far as possible, not quite sure what the runtime penalty is
2020-11-02 19:32:44 +0100rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 240 seconds)
2020-11-02 19:33:00 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 19:33:02 +0100 <davean> Honestly no one tries to write high performance parsers in Haskell because the basics are usually fast enough - look at aeson, its dog slow and no one seems to care.
2020-11-02 19:33:30 +0100 <dminuoso> The package description says its "high performance"!
2020-11-02 19:33:34 +0100 <davean> The only person maintaining a faster version just abandoned theirs
2020-11-02 19:33:38 +0100 <davean> dminuoso: Many people lie.
2020-11-02 19:33:43 +0100 <dminuoso> davean: Also, https://github.com/J-mie6/ParsleyHaskell
2020-11-02 19:34:01 +0100 <davean> We have Haskell JSON parsers far faster than aeson.
2020-11-02 19:34:02 +0100 <dminuoso> So someone is trying to write optimizing high performance parser combinators.
2020-11-02 19:34:04 +0100 <dminuoso> :)
2020-11-02 19:34:34 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
2020-11-02 19:34:36 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Quit: Leaving)
2020-11-02 19:35:02 +0100rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi)
2020-11-02 19:35:39 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2020-11-02 19:36:10 +0100 <dminuoso> davean: But yeah, the example of aeson is pretty good, I notice this in my day job time after time
2020-11-02 19:36:16 +0100 <dminuoso> How performance if often not important.
2020-11-02 19:36:32 +0100 <tomsmeding> the question is, do we have a json parser library that 1. parses more quickly, and 2. compiles more quickly?
2020-11-02 19:36:41 +0100cosimone(~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad) (Quit: cosimone)
2020-11-02 19:36:46 +0100 <dminuoso> We have one project where latency is key, but generally we couldn't care less if aeson takes 5ms to parse some incoming request or not.
2020-11-02 19:37:02 +0100idhugo(~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 256 seconds)
2020-11-02 19:37:03 +0100 <dminuoso> tomsmeding: haha, aeson is not good on either metric
2020-11-02 19:37:13 +0100 <davean> Right. I know people who DID do high performance JSON stuff in Haskell, etc
2020-11-02 19:37:13 +0100 <tomsmeding> my point :p
2020-11-02 19:37:20 +0100 <davean> and like they have a ring buffer between cores, etc
2020-11-02 19:37:25 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 19:37:27 +0100 <davean> and you can do all this in Haskell.
2020-11-02 19:37:37 +0100christo(~chris@81.96.113.213)
2020-11-02 19:37:39 +0100 <davean> No one even switches which JSON parsing package they use to get a reasonable one ususally though.
2020-11-02 19:38:10 +0100 <dminuoso> Plus, if performance was so critical, I wouldn't touch JSON with a 3.048m pole to begin with
2020-11-02 19:38:13 +0100 <davean> tomsmeding: Hum, I think we have ones that are faster in both actually, I'd have to double check, I don't pay attention to compile times because they're so not important but I THINK it does.
2020-11-02 19:38:19 +0100 <dminuoso> CBOR would be a far better candidate
2020-11-02 19:38:51 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 268 seconds)
2020-11-02 19:39:04 +0100 <dminuoso> My only annoyance with aeson is that its interface is bad and typeclass heavy
2020-11-02 19:39:14 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-11-02 19:39:15 +0100 <davean> Honestly I do mind the performance.
2020-11-02 19:39:32 +0100 <daydaynatation> is IO action lazy by default? If so how can i force it to be strict?
2020-11-02 19:39:38 +0100 <dminuoso> daydaynatation: yes and no
2020-11-02 19:39:43 +0100 <tomsmeding> davean: compile times are in nigh-all cases less important than runtime performance, but damn they are annoying :p
2020-11-02 19:39:47 +0100 <davean> But thats because the more requests per core per second I can handle the less scaling overhead I get
2020-11-02 19:39:55 +0100 <dminuoso> daydaynatation: So Haskell is non-strict in *values*, that is the computatoin of `IO ()` itself can be lazy
2020-11-02 19:40:02 +0100 <dminuoso> But the action itself is (in general) strict
2020-11-02 19:40:08 +0100 <dminuoso> There are things like lazy IO, which are terrible
2020-11-02 19:40:56 +0100 <davean> What the IO action *does* is generally not lazy, how the IO action *gets defined* is non-strict.
2020-11-02 19:41:01 +0100conal(~conal@198.8.81.68) (Quit: Computer has gone to sleep.)
2020-11-02 19:41:09 +0100 <daydaynatation> i'm time an action with time :: IO a -> IO a which wraps an anction between CPUTimes
2020-11-02 19:41:31 +0100 <daydaynatation> the reuslts doesn't look right, so i'm guessing it could be related to laziness
2020-11-02 19:41:56 +0100 <dminuoso> daydaynatation: can you share the code and results?
2020-11-02 19:42:06 +0100 <dminuoso> That might be easier than to work with some vague description
2020-11-02 19:42:29 +0100 <davean> daydaynatation: Though thats most likely not related to laziness
2020-11-02 19:42:41 +0100 <davean> daydaynatation: Why doesn't it look right?
2020-11-02 19:42:45 +0100 <daydaynatation> dminuoso: which paste site should I use?
2020-11-02 19:42:48 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-02 19:43:11 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de)
2020-11-02 19:43:21 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 19:43:22 +0100 <geekosaur> @where paste
2020-11-02 19:43:22 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2020-11-02 19:43:34 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit)
2020-11-02 19:43:58 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de)
2020-11-02 19:44:18 +0100conal(~conal@198.8.81.68)
2020-11-02 19:44:21 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit)
2020-11-02 19:44:30 +0100conal(~conal@198.8.81.68) (Client Quit)
2020-11-02 19:44:44 +0100 <daydaynatation> https://paste.tomsmeding.com/qgA1JMgU
2020-11-02 19:44:50 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de)
2020-11-02 19:45:07 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 19:45:08 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit)
2020-11-02 19:45:22 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 19:45:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 19:45:30 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de)
2020-11-02 19:45:39 +0100 <daydaynatation> result is here: https://paste.tomsmeding.com/hyrFyOzz
2020-11-02 19:45:51 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-02 19:45:55 +0100jakob_(~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit)
2020-11-02 19:46:01 +0100 <daydaynatation> list operations are so much faster than vector
2020-11-02 19:46:23 +0100 <koz_> Not something we hear often.
2020-11-02 19:46:58 +0100UpstreamSalmon(uid12077@gateway/web/irccloud.com/x-crbxrpluwxladazf) (Quit: Connection closed for inactivity)
2020-11-02 19:47:39 +0100khaladrogo_lite(~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55) (Quit: Leaving)
2020-11-02 19:47:51 +0100khaladrogo(~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55) (Remote host closed the connection)
2020-11-02 19:48:12 +0100 <daydaynatation> I'm a beginner in Haskell, the code is very awkard
2020-11-02 19:48:46 +0100 <davean> Oh, well
2020-11-02 19:48:56 +0100 <davean> Thats not an IO action really that you're doign there?
2020-11-02 19:49:19 +0100 <davean> What you were *trying* to time was a pure computation.
2020-11-02 19:49:49 +0100 <daydaynatation> I did generate a random number in the action
2020-11-02 19:49:59 +0100 <davean> Yah, and that part gets computed, but thats not where the time is taken
2020-11-02 19:50:16 +0100 <tomsmeding> @hackage criterion-measurement
2020-11-02 19:50:17 +0100 <lambdabot> https://hackage.haskell.org/package/criterion-measurement
2020-11-02 19:50:18 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-02 19:50:22 +0100 <davean> The IO part *does* get executed here, but the sorting is optional depending on if oyu use it or not because its not IO
2020-11-02 19:50:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-02 19:50:37 +0100 <tomsmeding> (which depends on aeson.......)
2020-11-02 19:50:48 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-02 19:51:04 +0100 <davean> I should see how long it would take me to convert the parts of hackage I sit on top of off of aeson.
2020-11-02 19:51:24 +0100 <davean> I bet I could do that in ... 30 hours? Thats a lot of code and a fairly significant change really, but it seems quite doable.
2020-11-02 19:51:25 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-02 19:51:25 +0100 <daydaynatation> ok..let me digest. but do you understand why the list operations is quicker?
2020-11-02 19:51:36 +0100 <davean> daydaynatation: yes, I do, because you never check that its sorted.
2020-11-02 19:51:49 +0100 <davean> so *all* you're really testing is that it generates a random list
2020-11-02 19:51:53 +0100 <davean> Which is the IO part
2020-11-02 19:52:58 +0100 <davean> I have to go, or I'd comment on the code and ways to improve it :/
2020-11-02 19:53:16 +0100 <daydaynatation> thanks!
2020-11-02 19:53:27 +0100 <tomsmeding> it's not accurate, but for this you can kind of see IO as being defined as 'data IO a = IO a'
2020-11-02 19:53:35 +0100stef204(~stef204@unaffiliated/stef-204/x-384198)
2020-11-02 19:53:39 +0100knupfer(~Thunderbi@200116b82c45b300e8f677624452dee1.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2020-11-02 19:53:51 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu)
2020-11-02 19:53:55 +0100 <tomsmeding> that 'r <- action' evaluates 'r' to WHNF (do you know that term?), which is the IO constructor, but not the 'a' inside
2020-11-02 19:54:17 +0100 <tomsmeding> so if you force 'fmap f (some IO action)', then that f is never evaluated yet
2020-11-02 19:54:38 +0100 <tomsmeding> since the head (as in WHNF) of the result is already evaluated to IO
2020-11-02 19:54:40 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 19:54:51 +0100 <dminuoso> Im not convinced that IO model is helpful in any way.
2020-11-02 19:54:57 +0100 <dminuoso> It's very suggestive in the wrong ways
2020-11-02 19:55:05 +0100Axma45768(~Axman6@pdpc/supporter/student/Axman6)
2020-11-02 19:55:08 +0100 <tomsmeding> okay maybe it is
2020-11-02 19:55:18 +0100 <davean> Also, I want to point out that the action tested here *does not use a reason to be IO*
2020-11-02 19:55:26 +0100mmalecki(~mmalecki@154.13.1.56)
2020-11-02 19:55:34 +0100 <davean> Random number generation does not require IO
2020-11-02 19:55:40 +0100 <daydaynatation> If i leave IO out of it, how do people time pure code?
2020-11-02 19:55:49 +0100 <davean> daydaynatation: the timing needs to be in IO
2020-11-02 19:55:50 +0100 <dminuoso> My referred analogy of `IO T` is `list of assembly instruction that, if executed, would produce a result of type T`
2020-11-02 19:55:56 +0100 <tomsmeding> (fixing it is easy, by the way: either force 'r' using Control.DeepSeq.force, or use a primitive from criterion-measurement)
2020-11-02 19:56:14 +0100 <dminuoso> Which seems to work rather well, and helps accept IO as being something opaque
2020-11-02 19:56:25 +0100 <davean> tomsmeding: those will make the list variant look worse performance wise than they REALLY are.
2020-11-02 19:56:30 +0100 <davean> erg, have to go.
2020-11-02 19:56:40 +0100 <geekosaur> we generally use the criterion package, which knows how to work around laziness doing things like deferring all computation you thought had already taken place into the timed part
2020-11-02 19:56:48 +0100 <tomsmeding> davean: not if you only force the final result :p
2020-11-02 19:57:15 +0100 <tomsmeding> geekosaur: or if you want to only use the timing primitives and not the whole benchmarking+reporting suite around it, use the criterion-measurement package :p
2020-11-02 19:57:27 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 19:57:46 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 246 seconds)
2020-11-02 19:58:22 +0100mupf(~micha@v22017094964653601.ultrasrv.de) (Quit: WeeChat 2.9)
2020-11-02 19:59:13 +0100mupf(~micha@v22017094964653601.ultrasrv.de)
2020-11-02 20:00:33 +0100 <sm[m]> Aha.. SPJ "The Launch of the Haskell Foundation", streaming on youtube in 40h - https://www.reddit.com/r/haskell/comments/jml10v/haskell_exchange_2020_opening_keynote_the_launch/
2020-11-02 20:00:35 +0100 <tomsmeding> daydaynatation: fix 1: https://paste.tomsmeding.com/165QyyNN
2020-11-02 20:01:42 +0100 <daydaynatation> cool! thx let me check
2020-11-02 20:01:58 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 20:03:24 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 240 seconds)
2020-11-02 20:03:33 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-02 20:03:36 +0100knupfer(~Thunderbi@200116b82c45b300e014d1b214daaf45.dip.versatel-1u1.de)
2020-11-02 20:05:23 +0100kuribas(~user@ptr-25vy0i9b0d7gsf4mjtv.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-11-02 20:05:49 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: Textual IRC Client: www.textualapp.com)
2020-11-02 20:05:51 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-02 20:06:30 +0100 <daydaynatation> it does look better! but the two tests take similar time
2020-11-02 20:06:48 +0100 <daydaynatation> tomsmeding: let me dig deeper. thx!
2020-11-02 20:07:02 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Quit: leaving)
2020-11-02 20:07:50 +0100 <tomsmeding> daydaynatation: or using criterion-measurement: https://paste.tomsmeding.com/uSMMDfGo
2020-11-02 20:08:55 +0100 <tomsmeding> in the end it does basically the same thing in this case, but the advantage is that 1. you get more info than just the time (see the rest of the Measured data type), 2. the '1' can be increased to repeat the measurement, and 3. you're forced to choose how strictly you want to evaluate the result, here using nfIO
2020-11-02 20:08:56 +0100mmohammadi9812(~mmohammad@188.210.118.100) (Quit: Quit)
2020-11-02 20:08:58 +0100conal(~conal@198.8.81.68)
2020-11-02 20:09:07 +0100acidjnk_new(~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de)
2020-11-02 20:09:29 +0100 <tomsmeding> and if you want nice reports and fancy stuff, use the full criterion library :p
2020-11-02 20:09:34 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 20:10:34 +0100 <daydaynatation> Thanks tomsmeding
2020-11-02 20:10:35 +0100 <tomsmeding> if you'd have a normal pure value, not an IO action, you could use 'nf' instead of 'nfIO'
2020-11-02 20:10:58 +0100 <tomsmeding> good luck :)
2020-11-02 20:11:47 +0100 <daydaynatation> tomsmeding: I don't see criterion code in your last paste
2020-11-02 20:12:05 +0100 <daydaynatation> tomsmeding: Perhaps wrong diff?
2020-11-02 20:12:08 +0100 <tomsmeding> oh crap yes :')
2020-11-02 20:12:52 +0100 <tomsmeding> https://paste.tomsmeding.com/z3fyxybh
2020-11-02 20:12:58 +0100 <tomsmeding> (ignore the Lib/Main test/main replacements)
2020-11-02 20:13:19 +0100 <tomsmeding> (using 'measure' doesn't return the actual function value, hence I removed that)
2020-11-02 20:13:44 +0100 <daydaynatation> tomsmeding: Always a pleasure to learn a new Lib!
2020-11-02 20:14:26 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 20:15:21 +0100berberman(~berberman@unaffiliated/berberman) (Read error: Connection reset by peer)
2020-11-02 20:15:34 +0100berberman_(~berberman@unaffiliated/berberman)
2020-11-02 20:16:44 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-11-02 20:17:01 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds)
2020-11-02 20:17:42 +0100Tario(~Tario@201.192.165.173)
2020-11-02 20:18:24 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-02 20:21:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 20:22:56 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 256 seconds)
2020-11-02 20:23:25 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-02 20:25:15 +0100tauli(~textual@185.213.155.161) (Quit: Textual IRC Client: www.textualapp.com)
2020-11-02 20:26:33 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 20:27:59 +0100Amras(~Amras@unaffiliated/amras0000)
2020-11-02 20:28:45 +0100christo(~chris@81.96.113.213)
2020-11-02 20:30:53 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-02 20:31:09 +0100u0_a298(~user@47.206.148.226)
2020-11-02 20:32:25 +0100Deide(~Deide@217.155.19.23)
2020-11-02 20:33:05 +0100dcoutts_(~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 240 seconds)
2020-11-02 20:33:15 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 20:33:21 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 256 seconds)
2020-11-02 20:33:55 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 20:33:58 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit)
2020-11-02 20:34:04 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com)
2020-11-02 20:34:27 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-02 20:35:02 +0100dcoutts_(~duncan@33.14.75.194.dyn.plus.net)
2020-11-02 20:36:32 +0100 <bqv> Friends how would you debug ffi-heavy haskell?
2020-11-02 20:37:04 +0100 <maerwald> debug what
2020-11-02 20:37:35 +0100 <bqv> Well see I have an issue. My program exits
2020-11-02 20:37:45 +0100 <bqv> But not in failure, just exits
2020-11-02 20:37:56 +0100 <bqv> No clue why, need to get interactive
2020-11-02 20:38:01 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Read error: Connection reset by peer)
2020-11-02 20:38:05 +0100 <bqv> But I reckon its in the C code
2020-11-02 20:38:30 +0100 <sm[m]> reckon yer right, pardner
2020-11-02 20:38:31 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-02 20:38:37 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 20:38:41 +0100 <geekosaur> since FFI is typically in IO, I do a lot of logging around the FFI calls. that said, if something in C is calling exit(), you can't typically intervene and it won't return control to Haskell
2020-11-02 20:39:10 +0100 <geekosaur> the best you might do is an atexit handler that prints something while it's on the way out
2020-11-02 20:39:15 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-02 20:39:16 +0100 <bqv> I've narrowed it down to the call, but now I wanna peek into that call
2020-11-02 20:39:31 +0100 <bqv> But... gdb? Haskell?
2020-11-02 20:39:42 +0100 <bqv> Is that even realistic?
2020-11-02 20:39:43 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-11-02 20:39:49 +0100 <monochrom> Can you add fprint(stderr's to the C code?
2020-11-02 20:39:55 +0100 <geekosaur> you'd be able to trace back to the start of the call, at least
2020-11-02 20:39:58 +0100 <bqv> The c code isn't mine :D
2020-11-02 20:40:04 +0100 <bqv> Its a library
2020-11-02 20:40:22 +0100 <bqv> Eh, I suppose I could recompile it
2020-11-02 20:40:28 +0100 <sm[m]> yes, people successfully use gdb for this kind of thing I believe
2020-11-02 20:40:36 +0100 <bqv> Thats a nuclear option though
2020-11-02 20:40:59 +0100 <bqv> sm[m]: is there a trick to it or will it work ootb?
2020-11-02 20:41:34 +0100 <pjb> nowadays we have the sources almost all the time, so you can just edit and recompile the library to help debug.
2020-11-02 20:41:35 +0100 <sm[m]> I don't know gdb unfortunately.. someone here will know, otherwise try #ghc
2020-11-02 20:41:57 +0100 <pjb> Sometimes there are already various DEBUG defines you can set to add traces.
2020-11-02 20:42:08 +0100 <sm[m]> sometimes it's easier to read code and think about what could be going wrong
2020-11-02 20:42:15 +0100ubert(~Thunderbi@p200300ecdf1e530be6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-02 20:42:35 +0100 <pjb> Depends on the kind of bug.
2020-11-02 20:42:45 +0100knupfer(~Thunderbi@200116b82c45b300e014d1b214daaf45.dip.versatel-1u1.de) (Quit: knupfer)
2020-11-02 20:42:57 +0100knupfer(~Thunderbi@200116b82c45b3000805a93423d8669d.dip.versatel-1u1.de)
2020-11-02 20:42:57 +0100raichoo(~raichoo@dslb-092-073-210-010.092.073.pools.vodafone-ip.de) (Quit: Lost terminal)
2020-11-02 20:42:59 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds)
2020-11-02 20:43:10 +0100solonarv(~solonarv@astrasbourg-653-1-117-122.w90-33.abo.wanadoo.fr)
2020-11-02 20:43:14 +0100 <bqv> Ack, there's another complication
2020-11-02 20:43:19 +0100 <pjb> But one problem with reading the code (when it's you who wrote it), is that if there's a bug, it's because you have bad expectation about what it does, so reading again only makes you think about the bad interpretation, not the actual real one.
2020-11-02 20:43:32 +0100 <pjb> Hence running it with prints. Here the problems usually jump to the eyes.
2020-11-02 20:43:50 +0100 <bqv> The program has to be executed by another certain launcher...
2020-11-02 20:44:01 +0100 <bqv> That makes gdb a pain
2020-11-02 20:44:35 +0100 <pjb> You can wrap your program in a shell script, to log the arguments and environment set up by the launcher. Then you can replicate them in gdb.
2020-11-02 20:45:03 +0100 <bqv> Its IPC
2020-11-02 20:45:06 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-02 20:45:09 +0100 <bqv> And setuid
2020-11-02 20:45:12 +0100 <bqv> Not environment
2020-11-02 20:45:26 +0100 <pjb> gdb can also attach to a process that's already run, eg. if your launcher sets up pipes and communicate with your program.
2020-11-02 20:45:34 +0100 <pjb> gdb attach command is great!
2020-11-02 20:46:00 +0100 <bqv> yeah, that would be the plan, so it would just be a matter of getting it to break immediately on launch so I can catch it
2020-11-02 20:46:09 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 20:46:37 +0100 <tomsmeding> can't you just put 'threadDelay 1000000' at the start of your haskell program
2020-11-02 20:46:45 +0100 <tomsmeding> or well, perhaps add a zero
2020-11-02 20:46:47 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-02 20:46:57 +0100 <bqv> Ahah, true
2020-11-02 20:48:39 +0100 <tomsmeding> also if you want to postpone gdb for some reason (perhaps the library doesn't have debug symbols?), you can also run your program under 'strace -f -o log.txt'
2020-11-02 20:48:49 +0100 <tomsmeding> and then grep the produced log.txt for the process ID if your program
2020-11-02 20:49:11 +0100 <tomsmeding> (also -ff may be useful instead of -f, see the strace man page)
2020-11-02 20:49:19 +0100mokulus_(~mat@176.111.230.96) (Quit: WeeChat 2.9)
2020-11-02 20:49:33 +0100 <tomsmeding> also maybe ltrace? though that's a bit hit and miss sometimes
2020-11-02 20:49:37 +0100mokulus(~mat@176.111.230.96)
2020-11-02 20:49:49 +0100 <bqv> Oh that's a good point, yeah ltrace sounds an extremely easy win if it works
2020-11-02 20:51:02 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 20:53:31 +0100aarvar(~foewfoiew@50.35.43.33) (Quit: Leaving.)
2020-11-02 20:53:34 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-11-02 20:54:24 +0100 <bqv> You're kidding. Adding ltrace made the bug vanish
2020-11-02 20:54:52 +0100 <maerwald> lolo
2020-11-02 20:55:07 +0100 <maerwald> the beauty of debugging
2020-11-02 20:55:36 +0100 <bqv> Extraordinary and inconvenient
2020-11-02 20:55:46 +0100 <tomsmeding> does the library you call spawn new processes/threads?
2020-11-02 20:55:56 +0100 <maerwald> space leak gone as soon as you enable heap profiling :p
2020-11-02 20:56:10 +0100 <sm[m]> how about strace
2020-11-02 20:56:17 +0100 <bqv> No processes, but threads yes
2020-11-02 20:56:29 +0100 <tomsmeding> I bet something in your system receives a signal, and thus quits, and there is a wrapper around that that swallows the non-zero exit code
2020-11-02 20:56:45 +0100 <tomsmeding> where "system" is collection of processes that your launcher starts
2020-11-02 20:57:18 +0100 <bqv> ha! Strace works too...
2020-11-02 20:58:01 +0100 <tomsmeding> "works" as in prevents the exit?
2020-11-02 20:58:05 +0100 <bqv> Yes
2020-11-02 20:58:10 +0100 <tomsmeding> fascinating
2020-11-02 20:58:13 +0100 <tomsmeding> try gdb and valgrind
2020-11-02 20:58:22 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 20:58:38 +0100 <bqv> those are far more complicated, i don't think i can try them right now
2020-11-02 20:58:54 +0100 <tomsmeding> "can" as in want to, or understand how to?
2020-11-02 20:59:10 +0100 <sm[m]> presumably it's not being killed by the OOM killer
2020-11-02 20:59:14 +0100 <bqv> it's just problematic because this is a display compositor, so it being STOPped means my pc is unusable
2020-11-02 20:59:21 +0100 <bqv> i need a second machine to gdb it
2020-11-02 20:59:25 +0100 <bqv> as i discovered a few minutes ago
2020-11-02 20:59:25 +0100 <tomsmeding> oof
2020-11-02 20:59:34 +0100 <tomsmeding> well, you can switch to a different tty :p
2020-11-02 20:59:42 +0100 <bqv> you'd think...
2020-11-02 20:59:44 +0100 <bqv> but no :p
2020-11-02 20:59:49 +0100 <tomsmeding> assuming the ctrl-alt-FN thing still goes through
2020-11-02 21:00:01 +0100 <bqv> had to ssh in via phone to kill gdb
2020-11-02 21:00:38 +0100justsomeguy(~justsomeg@2603:9000:960a:fc00:c4d2:5b73:c7b7:3a2b)
2020-11-02 21:00:38 +0100justsomeguy(~justsomeg@2603:9000:960a:fc00:c4d2:5b73:c7b7:3a2b) (Changing host)
2020-11-02 21:00:38 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-02 21:01:08 +0100 <bqv> is the class of bugs that vanish under strace/ltrace known?
2020-11-02 21:01:13 +0100vacm(~vacwm@70.23.92.191)
2020-11-02 21:01:23 +0100 <bqv> or will i just have to wait to see what gdb does
2020-11-02 21:01:30 +0100alx741(~alx741@186.178.110.193) (Quit: alx741)
2020-11-02 21:01:44 +0100bqv!
2020-11-02 21:01:48 +0100 <bqv> i can qemu this
2020-11-02 21:01:51 +0100 <sm[m]> space leaks often vanish when you add haskell tracing. Not sure about your situation there
2020-11-02 21:02:27 +0100Gurkenglas__Gurkenglas
2020-11-02 21:02:38 +0100 <sm[m]> but that's why I asked about memory usage
2020-11-02 21:02:38 +0100 <bqv> sm[m]: i've compiled with and without executable profiling enabled
2020-11-02 21:02:43 +0100 <bqv> i don't think it affected anything
2020-11-02 21:02:44 +0100meowphius(~meowphius@pool-173-76-247-88.bstnma.fios.verizon.net)
2020-11-02 21:02:46 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep)
2020-11-02 21:02:55 +0100 <bqv> is that what you had in mind, or a specific kind?
2020-11-02 21:03:09 +0100 <tomsmeding> FWIW, you can simulate ctrl-alt-FN over ssh by running 'sudo chvt N'
2020-11-02 21:03:18 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 21:03:22 +0100 <bqv> ah, yes
2020-11-02 21:03:22 +0100 <sm[m]> bqv: no I haven't suggested haskell profiling (since it sounded like a FFI/c-related issue)
2020-11-02 21:03:40 +0100 <tomsmeding> run gdb in a tmux, start the thing, observe screen freeze, chvt over ssh, tmux a, and continue?
2020-11-02 21:04:16 +0100 <bqv> hmm
2020-11-02 21:04:24 +0100 <bqv> maybe worth a try
2020-11-02 21:04:33 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 21:04:43 +0100 <tomsmeding> (I was honestly surprised that chvt over ssh works)
2020-11-02 21:05:21 +0100 <sm[m]> bqv: I don't think this is your issue but I was hinting to watch it in top once to make sure it's not being killed for using all memory - since this is pretty common with haskell apps
2020-11-02 21:06:00 +0100 <bqv> i imagine that would be logged in dmesg too, anyway, right?
2020-11-02 21:06:09 +0100 <tomsmeding> (and because I use an external display with the laptop lid shut, switching to a different tty over ssh made the systemd-inhibit process I have running nonfunctional, thus immediately sending my laptop to sleep...)
2020-11-02 21:06:26 +0100 <sm[m]> perhaps, probably so
2020-11-02 21:07:34 +0100nullheroes(~danielvu@168.235.66.22)
2020-11-02 21:08:40 +0100 <bqv> tomsmeding: nice! it worked
2020-11-02 21:08:45 +0100 <tomsmeding> :D
2020-11-02 21:08:45 +0100miklcct(quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (Remote host closed the connection)
2020-11-02 21:08:48 +0100 <tomsmeding> and?
2020-11-02 21:09:01 +0100 <bqv> not helpful, because it works in gdb too :D
2020-11-02 21:09:01 +0100 <tomsmeding> convoluted hacks are best hacks
2020-11-02 21:09:09 +0100 <tomsmeding> 🎉
2020-11-02 21:09:15 +0100 <tomsmeding> #fixed
2020-11-02 21:09:30 +0100 <bqv> this is bizarre. am i just consigned to always run this with a debugger attached
2020-11-02 21:09:32 +0100 <tomsmeding> is it reproducible outside tracing tools?
2020-11-02 21:09:37 +0100 <bqv> to collapse the bug's wavefunction or something
2020-11-02 21:09:38 +0100geekosaur67(82659a09@host154-009.vpn.uakron.edu)
2020-11-02 21:09:44 +0100 <tomsmeding> does it happen always or just sometimes
2020-11-02 21:09:48 +0100 <bqv> it is, yes, it's perfectly reproducible
2020-11-02 21:09:53 +0100coot(~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-11-02 21:09:57 +0100miklcct(quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7)
2020-11-02 21:10:03 +0100 <bqv> without strace/ltrace/gdb, the program always exits within a second
2020-11-02 21:10:21 +0100 <bqv> exitcode 0, no relevant error logged
2020-11-02 21:10:35 +0100 <tomsmeding> exitcode 0 also of your haskell process, or only of the launcher around it?
2020-11-02 21:10:37 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 21:10:47 +0100 <bqv> oh, that's a good point! i hadn't checked.
2020-11-02 21:11:01 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-11-02 21:11:09 +0100 <tomsmeding> c.f. my remark above that I bet something is getting a signal and the exit code is getting swallowed :p
2020-11-02 21:11:13 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-02 21:11:16 +0100 <tomsmeding> I've seen this before
2020-11-02 21:11:27 +0100mmohammadi9812(~mmohammad@188.210.118.100)
2020-11-02 21:11:29 +0100 <tomsmeding> (I think)
2020-11-02 21:11:47 +0100 <geekosaur67> +RTS -v0 ?
2020-11-02 21:12:03 +0100 <geekosaur67> (C call interrupted by RTS itimer)
2020-11-02 21:12:09 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-11-02 21:12:17 +0100 <bqv> ha
2020-11-02 21:12:19 +0100 <bqv> you were right
2020-11-02 21:12:23 +0100 <bqv> it's getting USR1
2020-11-02 21:12:27 +0100 <bqv> but it is exiting with 0
2020-11-02 21:12:54 +0100aarvar(~foewfoiew@50.35.43.33)
2020-11-02 21:12:56 +0100 <bqv> does haskell die on SIGUSR1?
2020-11-02 21:13:37 +0100 <geekosaur67> anything that doesn't specifically handle it will die
2020-11-02 21:13:56 +0100 <tomsmeding> $ man 7 signal
2020-11-02 21:14:01 +0100 <tomsmeding> SIGUSR1 has 'Term' as the default action
2020-11-02 21:14:13 +0100 <bqv> that seems extreme
2020-11-02 21:14:17 +0100 <tomsmeding> USR1 is a really weird one to get though
2020-11-02 21:14:25 +0100 <tomsmeding> most signals have Term as default, only a few don't
2020-11-02 21:14:57 +0100 <bqv> i feel like it's the launcher sending it
2020-11-02 21:15:02 +0100 <tomsmeding> SIGHUP, or SIGBUS/SIGSEGV, SIGPIPE, I would've expected
2020-11-02 21:15:17 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 21:15:50 +0100 <bqv> i'll try adding a System.Posix.Signals handler
2020-11-02 21:16:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 21:17:53 +0100 <tomsmeding> if the process doesn't actively catch USR1 somehow, it shouldn't exit with code 0 due to it, but rather code 138
2020-11-02 21:17:53 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-02 21:18:00 +0100 <tomsmeding> (128 + (10 == SIGUSR1))
2020-11-02 21:18:21 +0100 <bqv> i checked by using bash -c "prog; echo $?"
2020-11-02 21:18:30 +0100 <bqv> it echoed 0, but maybe that's a bash quirk
2020-11-02 21:18:37 +0100Tario(~Tario@201.192.165.173)
2020-11-02 21:19:06 +0100 <bqv> hang on, maybe it wasn't recieving it, maybe it was sending it
2020-11-02 21:19:13 +0100rprije(~rprije@194-193-168-77.tpgi.com.au)
2020-11-02 21:19:15 +0100 <monochrom> I don't know whether it's relevant. It may be safer to use the threaded runtime system (give -threaded to GHC at link time). This eliminates a SIGVTALRM that may interfere with some syscalls.
2020-11-02 21:19:36 +0100 <bqv> i'm already using -threaded by necessity
2020-11-02 21:19:45 +0100 <merijn> oh, oh, oh
2020-11-02 21:19:52 +0100 <tomsmeding> bqv: is your program starting X? maybe https://www.x.org/archive/X11R6.8.1/doc/Xserver.1.html#sect11 ?
2020-11-02 21:19:52 +0100 <monochrom> Ah OK.
2020-11-02 21:19:56 +0100 <merijn> People are talking posix signals! My time to shine!
2020-11-02 21:19:59 +0100flatmap(~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 21:19:59 +0100 <merijn> You're all wrong
2020-11-02 21:20:06 +0100 <bqv> tomsmeding: wayland, unfortunately
2020-11-02 21:20:10 +0100coot(~coot@37.30.52.148.nat.umts.dynamic.t-mobile.pl)
2020-11-02 21:20:17 +0100 <monochrom> That sounds like s/shine/roast/, merijn. :)
2020-11-02 21:20:20 +0100 <merijn> No clue what was being discussed, but per my usual heuristic it's a safe bet
2020-11-02 21:20:26 +0100 <bqv> lmao
2020-11-02 21:20:37 +0100tms_(thomaav@cassarossa.samfundet.no) (Ping timeout: 264 seconds)
2020-11-02 21:20:45 +0100 <merijn> 'cause no one ever gets signals right
2020-11-02 21:20:53 +0100tomsmedingdies from apprehension
2020-11-02 21:20:57 +0100 <monochrom> To be fair, on certain other topics, I'm the one to say "as usual, all of you were wrong"
2020-11-02 21:21:00 +0100hackagefoldl 1.4.10 - Composable, streaming, and efficient left folds https://hackage.haskell.org/package/foldl-1.4.10 (GabrielGonzalez)
2020-11-02 21:21:12 +0100 <merijn> as for the safety of -threaded and signals the answer is pretty simple.
2020-11-02 21:21:50 +0100 <merijn> While I haven't actually audited the signal handling code in GHC's RTS yet, I've concluded from discussions in #ghc that it's impossible to predictably and correctly handle posix signals in any runtime
2020-11-02 21:22:24 +0100 <monochrom> Is that just the worst case? Or is that also the average case.
2020-11-02 21:22:45 +0100 <tomsmeding> for that statement to be correct you'll have to define "any runtime" more precisely
2020-11-02 21:22:49 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 21:22:51 +0100 <merijn> monochrom: The average case it "it'll probably approximate what you intended"
2020-11-02 21:22:52 +0100 <bqv> oh
2020-11-02 21:22:55 +0100 <bqv> tomsmeding: wait, yes it is
2020-11-02 21:22:56 +0100 <tomsmeding> not saying that posix signals are a great design, but they _can_ work
2020-11-02 21:23:00 +0100 <bqv> because xwayland
2020-11-02 21:23:01 +0100 <merijn> tomsmeding: Either of the existing threaded/unthreaded runtimes
2020-11-02 21:23:13 +0100 <monochrom> I have accepted approximations.
2020-11-02 21:23:16 +0100 <tomsmeding> bqv: yes xwayland seems to inherit the same sigusr1 shenanigans from a quick web search
2020-11-02 21:23:24 +0100 <bqv> (also i checked source, as i suspected, my program is sending USR1, not recieving it
2020-11-02 21:23:27 +0100 <monochrom> (E.g., when I said "I no longer ask for great software")
2020-11-02 21:23:43 +0100ggole(~ggole@2001:8003:8119:7200:c42a:651c:d46:c888) (Quit: Leaving)
2020-11-02 21:23:45 +0100 <merijn> Basically, the threaded RTS *and* the "unthreaded" (confusingly) use multiple threads
2020-11-02 21:24:10 +0100 <monochrom> But there is also the angle that I am not using POSIX per se, I am using specifically Linux.
2020-11-02 21:24:13 +0100 <merijn> But do absolutely nothing to control which threads get signals, which means you have zero predictability of what gets interrupted when and what you can safely do in your handler
2020-11-02 21:25:05 +0100 <merijn> monochrom: linux has never made anything from posix *more* robust :p
2020-11-02 21:25:12 +0100 <bqv> ooh you bastard
2020-11-02 21:25:13 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 21:25:15 +0100 <tomsmeding> so the runtime needs to handle the signal internally, then raise an asynchronous haskell exception or something at the earliest opportunity _outside_ the actual signal handler, at which point the haskell-level signal handler can run
2020-11-02 21:25:19 +0100 <bqv> installing the USR1 handler fixed it
2020-11-02 21:25:22 +0100 <tomsmeding> I assume the ghc runtimes do that?
2020-11-02 21:25:27 +0100 <tomsmeding> bqv: yay!
2020-11-02 21:25:36 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-02 21:25:46 +0100 <bqv> that's kinda frustrating because now i'm not entirely sure what's even happening here
2020-11-02 21:25:50 +0100 <bqv> but oh well, it's solved at least
2020-11-02 21:25:56 +0100 <merijn> tomsmeding: Essentially, what I've concluded from work a few years ago on signal handling in a multi-threaded runtime is that there's only one possible way you can get any kind of predictable behaviour
2020-11-02 21:26:46 +0100 <merijn> You mask all signals in every thread, then have a single dedicated thread blocking on sigwait() (or it's pthread equivalent) and then have that thread set up the relevant flags/whatever to run user code
2020-11-02 21:26:51 +0100 <merijn> Anything else is insanity
2020-11-02 21:27:02 +0100tms_(thomaav@cassarossa.samfundet.no)
2020-11-02 21:27:10 +0100 <bqv> but wait, even in haskell?
2020-11-02 21:27:22 +0100 <merijn> bqv: In all languages
2020-11-02 21:27:31 +0100 <geekosaur67> signals happen at a level below haskell
2020-11-02 21:27:33 +0100 <bqv> won't the runtime behave vaguely predictably due to lightweight threads
2020-11-02 21:27:34 +0100 <tomsmeding> bqv: some process in your tree, say P, assigns a SIG_IGN handler for SIGUSR1, and has another child process that still has the terminating SIG_DFL on SIGUSR1; then P starts xwayland, which detects SIG_IGN, sends SIGUSR1 to its parent which flows down to the other child, which terminates, which wreaks havoc
2020-11-02 21:27:37 +0100 <tomsmeding> hypothesis
2020-11-02 21:27:43 +0100 <tomsmeding> completely unproven :D
2020-11-02 21:27:50 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-02 21:27:57 +0100 <merijn> bqv: Yes, but those haskell threads are stilling running on pthreads at some point
2020-11-02 21:28:06 +0100 <merijn> s/stilling/still
2020-11-02 21:28:08 +0100 <christo> in haskell you can have 2 threads running simmultaneously right?
2020-11-02 21:28:09 +0100 <bqv> hmm
2020-11-02 21:28:16 +0100 <christo> or n threads
2020-11-02 21:28:16 +0100 <merijn> christo: Sure
2020-11-02 21:28:29 +0100 <christo> i might be make a version of tetris in haskell
2020-11-02 21:28:34 +0100 <bqv> i mean moot point because i am using forkOS
2020-11-02 21:28:37 +0100 <merijn> christo: GHC does N:M multi-threading, so your multiplex N haskell threads on top of M OS threads
2020-11-02 21:28:38 +0100 <bqv> and -threaded
2020-11-02 21:28:39 +0100 <christo> and do all the music running at the same time with euterpea
2020-11-02 21:28:43 +0100 <tomsmeding> so merijn while you have a point about unpredictability of signals, it was _not_ actually the problem here ;)
2020-11-02 21:28:44 +0100 <monochrom> merijn: I think every expert agrees on that strategy, yes.
2020-11-02 21:28:46 +0100 <merijn> bqv: forkOS doesn't spawn OS threads
2020-11-02 21:29:04 +0100 <merijn> bqv: forkOS just prevents your Haskell thread from migrating between OS threads
2020-11-02 21:29:13 +0100 <bqv> right, bound thread
2020-11-02 21:29:36 +0100 <bqv> but then given i have the bound thread running exclusively ffi code, i have at least 2 threads
2020-11-02 21:29:38 +0100 <christo> in js i use canvas to draw, in haskell is there an equivalant? thx merijn
2020-11-02 21:29:38 +0100 <bqv> right?
2020-11-02 21:29:49 +0100 <merijn> christo: gloss, maybe?
2020-11-02 21:30:17 +0100 <christo> and in terms of networking, are there api's for that in haskell?
2020-11-02 21:30:18 +0100 <monochrom> No, forkOS has to spawn a fresh OS thread. What you want to not-guarantee is that this doesn't mean Haskell code will run on that OS thread.
2020-11-02 21:30:21 +0100 <christo> gloss? i'll look into it
2020-11-02 21:30:22 +0100 <merijn> bqv: That depends, for example are the safe foreign imports or unsafe foreign imports
2020-11-02 21:30:34 +0100 <merijn> christo: the "network" package? :p
2020-11-02 21:30:42 +0100 <bqv> er, hard to say
2020-11-02 21:30:44 +0100 <merijn> christo: It's basically a thin wrapper over posix sockets
2020-11-02 21:30:46 +0100 <bqv> i'm using inline-c
2020-11-02 21:30:46 +0100 <monochrom> Still, in practice, Haskell code will run on that OS thread, even though this fact is not future-proof.
2020-11-02 21:31:02 +0100 <christo> so in theory i can make an online tetris in haskell ?
2020-11-02 21:31:09 +0100 <merijn> monochrom: No, forkOS explicitly does not spawn a fresh OS thread
2020-11-02 21:31:16 +0100 <christo> or tetris client
2020-11-02 21:31:22 +0100 <monochrom> Therefore, I find "forkOS doesn't spawn an OS thread" is at best academic scaremongering, at worst a downright lie.
2020-11-02 21:31:58 +0100 <merijn> monochrom: forkOS spawns a bound thread, it doesn't affect the number of OS threads in existence
2020-11-02 21:32:56 +0100 <monochrom> Then you wouldn't have enough number of OS threads for sufficiently many independent C calls.
2020-11-02 21:33:32 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 272 seconds)
2020-11-02 21:33:47 +0100 <merijn> monochrom: What? How are those two things remotely related to each other?
2020-11-02 21:34:22 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-02 21:35:00 +0100 <monochrom> Do you mind taking a look at my answer already written up at http://www.vex.net/~trebla/haskell/ghc-conc-ffi.xhtml ? You can scroll down to the section "thread-local FFI calls"
2020-11-02 21:35:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 21:35:31 +0100 <geekosaur67> those are I/O manager threads, and it'll block waiting for one to become available if needed
2020-11-02 21:36:02 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds)
2020-11-02 21:36:07 +0100 <geekosaur67> separate pool from forkIO / forkOS threads
2020-11-02 21:36:39 +0100 <bqv> strange. the signal handler definitely solves the issue, but when i change the handler to do "something", it doesn't do that thing (but still solves the issue)
2020-11-02 21:36:46 +0100^[_^[
2020-11-02 21:37:09 +0100 <c_wraith> as I understand it, the only guarantee forkOS makes is that all safe FFI calls it makes will be on the same OS thread. Nothing about having exclusive access to that OS thread.
2020-11-02 21:37:12 +0100^[(sid43445@gateway/web/irccloud.com/x-iztepeaguyumtzta) (Changing host)
2020-11-02 21:37:12 +0100^[(sid43445@ircpuzzles/2015/april-fools/sixth/zgrep)
2020-11-02 21:37:26 +0100 <merijn> c_wraith: That's what the GHC docs say, yes
2020-11-02 21:37:59 +0100 <c_wraith> does the RTS actually give a stronger guarantee at this time?
2020-11-02 21:38:17 +0100 <merijn> Possibly, according to monochrom
2020-11-02 21:39:33 +0100 <bqv> surely forkOS twice then has to spawn at least one thread (or reuse one), because the resultant bound threads can't be the same or you'd run into concurrency problems
2020-11-02 21:40:00 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-02 21:40:01 +0100 <tomsmeding> unless there's already one laying around
2020-11-02 21:40:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 21:40:32 +0100 <bqv> exactly, yeah
2020-11-02 21:40:38 +0100domj(~domj@77.139.218.14) (Ping timeout: 260 seconds)
2020-11-02 21:40:45 +0100 <merijn> bqv: Why would you run into concurrency problems?
2020-11-02 21:41:11 +0100 <merijn> bqv: I don't see any conflict in having two bound threads on the same OS thread
2020-11-02 21:41:12 +0100 <geekosaur67> I don't think anything guarantees there won't be a block waiting for an available thread to run your FFI call on
2020-11-02 21:41:14 +0100 <bqv> merijn: envision a situation where both FFI threads block indefinitely
2020-11-02 21:41:19 +0100 <tomsmeding> bqv: the only reason I can think of that that happens (handler solves issue but doesn't run itself), is that some process between you and the SIGUSR1-sender detects that the SIGUSR1 handler is not SIG_DFL and therefore installs its own handler
2020-11-02 21:41:25 +0100 <merijn> bqv: Well, "don't do that, then" :)
2020-11-02 21:41:28 +0100 <bqv> lmao
2020-11-02 21:41:29 +0100 <tomsmeding> but that would be obscure
2020-11-02 21:41:30 +0100hackageHDBC-postgresql 2.4.0.0 - PostgreSQL driver for HDBC https://hackage.haskell.org/package/HDBC-postgresql-2.4.0.0 (ErikHesselink)
2020-11-02 21:41:35 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-11-02 21:42:03 +0100 <merijn> bqv: Actually, that's already a problem if only one of them blocks indefinitely
2020-11-02 21:42:06 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-11-02 21:42:13 +0100 <bqv> tomsmeding: that sounds bizarre
2020-11-02 21:42:17 +0100 <monochrom> Huh? I thought the whole point of "safe FFI call" is it can block all it wants and no one else is held waiting.
2020-11-02 21:42:21 +0100 <merijn> bqv: If monochrom is right (which at casual glance of the code is probably true)
2020-11-02 21:42:24 +0100 <tomsmeding> bqv: I'm kind of hoping it's not true
2020-11-02 21:42:29 +0100 <merijn> bqv: Then that can't happen
2020-11-02 21:42:53 +0100 <merijn> monochrom: It looks like you are probably correct per the code, but that's not what GHC guarantees per the docs
2020-11-02 21:43:05 +0100 <monochrom> The docs are outdated.
2020-11-02 21:43:16 +0100 <merijn> Now, maybe the docs are wrong and don't provide strong enough guarantees
2020-11-02 21:43:44 +0100 <monochrom> There is even an old version of the doc that positive guaranteed you would have only one capability, ever.
2020-11-02 21:43:52 +0100 <monochrom> Now look at -N100.
2020-11-02 21:44:02 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 21:44:10 +0100 <merijn> monochrom: once you do a safe foreign call the capability is unlocked
2020-11-02 21:44:11 +0100 <bqv> signal() is a syscall, i can strace this...
2020-11-02 21:44:22 +0100 <merijn> So if you have another thread then safe foreign calls can never block Haskell code, sure
2020-11-02 21:44:25 +0100 <tomsmeding> bqv: watch for sigaction() instead I think
2020-11-02 21:44:47 +0100 <merijn> But I'm pretty sure that you can run out of safe call threads if you keep spamming enough blocking safe calls
2020-11-02 21:44:47 +0100 <tomsmeding> though things might detect being ptrace'd >:D
2020-11-02 21:45:21 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 21:45:29 +0100 <merijn> bqv: I hope to god that signal() isn't called
2020-11-02 21:45:52 +0100 <merijn> signal is broken and deprecated for two decades, it should be sigaction() as tomsmeding points out
2020-11-02 21:46:29 +0100u0_a298`(~user@47.206.148.226)
2020-11-02 21:46:43 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net)
2020-11-02 21:46:51 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 21:47:03 +0100 <bqv> i see a lot of rt_sigaction
2020-11-02 21:47:11 +0100 <bqv> none refer to usr1
2020-11-02 21:47:12 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 21:47:28 +0100 <tomsmeding> welcome to the world of strace, where you suddenly see the loads of crap that everything executes
2020-11-02 21:47:38 +0100 <bqv> in fact there's no reference to usr1 at all
2020-11-02 21:47:43 +0100 <bqv> unless it's numeric
2020-11-02 21:47:47 +0100 <monochrom> I like signal() when I'm just tell it to SIG_IGN or SIG_DFL. It's dreadful to have to fill out a form for just those. And I always have trouble deciding whether the other fields really matter or not for those cases.
2020-11-02 21:47:53 +0100 <bqv> 128?
2020-11-02 21:48:16 +0100 <tomsmeding> bqv: 10
2020-11-02 21:48:42 +0100 <tomsmeding> monochrom: glibc's surface signal(3) probably calls sigaction(2) under the hood
2020-11-02 21:48:42 +0100 <bqv> nothing for that either
2020-11-02 21:48:46 +0100 <bqv> bizarre
2020-11-02 21:48:53 +0100 <merijn> monochrom: Those two are defensible, but as soon as you install an actual handler it's unusably broken
2020-11-02 21:49:11 +0100 <monochrom> Right, I know that.
2020-11-02 21:49:43 +0100 <monochrom> I'm a good kid, I use sigaction and make careful decisions about the options, when it's my handler.
2020-11-02 21:50:01 +0100u0_a298(~user@47.206.148.226) (Ping timeout: 264 seconds)
2020-11-02 21:50:06 +0100alp(~alp@2a01:e0a:58b:4920:ecfe:1146:fdb5:4e48)
2020-11-02 21:50:13 +0100 <bqv> ah wait
2020-11-02 21:50:24 +0100 <monochrom> And those fields are actually useful for handlers.
2020-11-02 21:50:49 +0100 <bqv> no, even with strace i should at least see the handler installed, right?
2020-11-02 21:50:58 +0100 <bqv> what is going on...
2020-11-02 21:51:04 +0100 <tomsmeding> with 'strace -f' yes
2020-11-02 21:51:09 +0100 <bqv> why -f?
2020-11-02 21:51:13 +0100 <bqv> i don't fork
2020-11-02 21:51:15 +0100 <geekosaur67> follow forks
2020-11-02 21:51:20 +0100 <tomsmeding> your children do
2020-11-02 21:51:24 +0100 <geekosaur67> but the parent does, you said?
2020-11-02 21:51:30 +0100 <tomsmeding> that
2020-11-02 21:51:33 +0100 <tomsmeding> sorry
2020-11-02 21:51:41 +0100 <bqv> i'm running `launcher -- strace program`
2020-11-02 21:51:50 +0100 <bqv> so strace's immediate child should be traced
2020-11-02 21:51:50 +0100 <tomsmeding> use -f anyway to be sure :p
2020-11-02 21:52:00 +0100 <bqv> but then i end up tracing x11 ;_;
2020-11-02 21:52:02 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 21:52:06 +0100 <bqv> that's ..not pretty
2020-11-02 21:52:10 +0100 <tomsmeding> which might very well be the culprit
2020-11-02 21:52:16 +0100 <tomsmeding> use -ff perhaps
2020-11-02 21:52:26 +0100 <bqv> see you in a minute or two...
2020-11-02 21:52:28 +0100 <tomsmeding> splits out the log for separate processes
2020-11-02 21:52:49 +0100 <monochrom> -fff and -ppp...
2020-11-02 21:53:49 +0100 <bqv> oh good god that's too many processes
2020-11-02 21:54:05 +0100 <bqv> but at least now i have some hits for USR1
2020-11-02 21:54:31 +0100 <bqv> 149, to be exact
2020-11-02 21:54:32 +0100 <monochrom> P.S. I am a robot and I always tried to train myself to have 10 levels of consistent strength for the range from ppp to fff.
2020-11-02 21:54:43 +0100 <tomsmeding> you may also like --trace for strace, or just rely on good-old grepping (better)
2020-11-02 21:55:06 +0100 <bqv> yeah, it's ok, i'm in emacs, so i can just smartly grep through this
2020-11-02 21:55:34 +0100 <tomsmeding> monochrom: I have the fortune of not being classically trained so I just take those dynamics markings as a general guideline :D
2020-11-02 21:55:37 +0100 <bqv> but i have truly no idea how to interpret any of it
2020-11-02 21:55:46 +0100 <monochrom> Yeah data scientists recommend saving all data and worrying about mining later.
2020-11-02 21:56:09 +0100 <tomsmeding> how many lines is 'grep USR1 *'
2020-11-02 21:56:17 +0100 <tomsmeding> $ grep USR1 * | wc -l
2020-11-02 21:56:22 +0100 <bqv> 149
2020-11-02 21:56:23 +0100 <monochrom> Oh, I think classical music people also take liberty. They too are against my robotic way.
2020-11-02 21:56:34 +0100 <tomsmeding> bqv: pastebin plz
2020-11-02 21:56:53 +0100 <monochrom> Or at least, fff for one piece don't have to be the same as fff for another piece.
2020-11-02 21:57:03 +0100 <tomsmeding> makes sense
2020-11-02 21:57:14 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-onbapdmfluqaidcp) (Quit: Connection closed for inactivity)
2020-11-02 21:57:24 +0100 <tomsmeding> some composers are less liberal with their fff's I'd think, rather calling that f or ff
2020-11-02 21:57:34 +0100 <monochrom> This is why I'm better off as a computer scientist or programmer or the like.
2020-11-02 21:57:50 +0100 <tomsmeding> apparently unicode has symbols for them 𝆑 𝆏
2020-11-02 21:58:10 +0100 <monochrom> If the code says "x = 1" then it is 1, what do you mean musicality allows you to change it to 2.
2020-11-02 21:58:37 +0100 <tomsmeding> something with physicists and pi?
2020-11-02 21:58:46 +0100 <bqv> termbin.com doesn't like recieving this many lines...
2020-11-02 21:58:51 +0100 <tomsmeding> 149?
2020-11-02 21:58:58 +0100 <bqv> oh no i was gonna send the full thing
2020-11-02 21:58:59 +0100 <tomsmeding> sounds like a crappy pastebin, try mine
2020-11-02 21:59:05 +0100 <dsal> bqv: I think you're just supposed to dump them into irc if you have too many lines.
2020-11-02 21:59:05 +0100 <tomsmeding> oh lol
2020-11-02 21:59:13 +0100 <bqv> it's only 1.9mb
2020-11-02 21:59:27 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 21:59:40 +0100 <tomsmeding> tar cz * | curl --data-binary @/dev/stdin https://tomsmeding.com/gooi/things.tar.gz
2020-11-02 22:00:02 +0100mmalecki(~mmalecki@154.13.1.56) ()
2020-11-02 22:00:21 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-02 22:00:28 +0100 <bqv> i can't tell if that succeeded or not
2020-11-02 22:00:33 +0100 <tomsmeding> did it print a URL
2020-11-02 22:00:44 +0100 <bqv> oh, yes
2020-11-02 22:00:52 +0100 <bqv> https://tomsmeding.com/vang/IZn8dA/things.tar.gz
2020-11-02 22:00:58 +0100 <bqv> also https://tomsmeding.com/vang/9OW8PN/things.tar.gz
2020-11-02 22:01:59 +0100 <tomsmeding> identical?
2020-11-02 22:02:06 +0100 <bqv> yeah lol
2020-11-02 22:02:11 +0100 <bqv> i did it twice by mistake
2020-11-02 22:02:35 +0100 <tomsmeding> (link is valid for 24 hours btw)
2020-11-02 22:02:54 +0100 <tomsmeding> cabal > stack I approve
2020-11-02 22:03:01 +0100 <bqv> :D
2020-11-02 22:04:25 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 22:04:29 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 22:04:36 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-02 22:05:37 +0100 <tomsmeding> why does process 1691973 write out "wl_display_create() = 0x00007f4770000c80" c h a r a c t e r b y c h a r a c t e r
2020-11-02 22:05:49 +0100 <bqv> that's coming from haskell, tbf
2020-11-02 22:06:12 +0100 <bqv> i think it might be because i build that string using a monoid
2020-11-02 22:06:14 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds)
2020-11-02 22:06:21 +0100 <bqv> (execWriter)
2020-11-02 22:06:30 +0100 <tomsmeding> ah no it's just String being String I think
2020-11-02 22:06:36 +0100 <bqv> heh
2020-11-02 22:06:43 +0100 <tomsmeding> but that's your haskell, apparently?
2020-11-02 22:07:02 +0100 <bqv> yes
2020-11-02 22:07:13 +0100 <bqv> (that's a hilarious sideeffect, btw)
2020-11-02 22:07:31 +0100 <tomsmeding> (line 1427 in your log)
2020-11-02 22:07:40 +0100 <bqv> yeah i found it
2020-11-02 22:09:02 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 264 seconds)
2020-11-02 22:09:14 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-kktozexnvkkmtbir) (Quit: Connection closed for inactivity)
2020-11-02 22:09:25 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-02 22:11:22 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
2020-11-02 22:11:36 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 22:11:56 +0100 <bqv> so the launcher sets handlers using sigaction on USR1
2020-11-02 22:11:57 +0100 <tomsmeding> merijn: apparently the haskell runtime uses signalfd4(2) and immediately after masks the signal
2020-11-02 22:12:03 +0100 <bqv> it's using that x11 mechanism
2020-11-02 22:12:06 +0100 <tomsmeding> (TIL sigalfd4)
2020-11-02 22:12:18 +0100 <bqv> perhaps the haskell runtime is clearing something it shouldn't?
2020-11-02 22:13:01 +0100 <tomsmeding> what process are you starting directly after you attach a handler to SIGUSR1 in haskell code?
2020-11-02 22:13:14 +0100chaosmasttter(~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
2020-11-02 22:13:14 +0100 <tomsmeding> (process 1692017)
2020-11-02 22:13:57 +0100 <bqv> i don't see anything fork-like happening around there
2020-11-02 22:14:15 +0100 <bqv> the immediate next line is basically a call to wl_display_create()
2020-11-02 22:14:24 +0100 <bqv> then a load of c marshalling
2020-11-02 22:14:53 +0100 <bqv> (actually, none of my code specifically creates any processes, but the launcher does, and the library might)
2020-11-02 22:15:11 +0100 <tomsmeding> ah
2020-11-02 22:15:35 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 22:15:54 +0100 <bqv> oh
2020-11-02 22:16:05 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 22:16:15 +0100 <bqv> would it matter if the handler was within a forkOS bound thread that's blocked indefinitely?
2020-11-02 22:16:23 +0100 <bqv> i thought because it's haskell code, it wouldn't be bound
2020-11-02 22:16:29 +0100 <bqv> but maybe it's blocked for that reason?
2020-11-02 22:16:42 +0100 <tomsmeding> ¯\_(ツ)_/¯
2020-11-02 22:17:07 +0100 <tomsmeding> I'm actually not all that familiar with the intricacies of forkOS, defer to the other people that contributed earlier :p
2020-11-02 22:17:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-11-02 22:17:45 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 22:17:49 +0100 <tomsmeding> AH
2020-11-02 22:18:17 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2020-11-02 22:18:30 +0100 <tomsmeding> okay I was wrong, that signalfd4 is not the haskell rts, that's whatever library you're using
2020-11-02 22:18:41 +0100 <bqv> oh, that's interesting
2020-11-02 22:18:52 +0100loprakoa[m](loprakoama@gateway/shell/matrix.org/x-xavaolgsmkbljkqt)
2020-11-02 22:19:01 +0100 <tomsmeding> early on there is an rt_sigaction that binds a handler to USR1; that'll be your code, because quickly after there is that c h a r a c t e r call to wl_display_create()
2020-11-02 22:19:49 +0100 <tomsmeding> later, though, at :13587-13588, your own haskell process (but I think the library, really) makes a signal FD and then SIG_BLOCK's USR1 in your process
2020-11-02 22:20:00 +0100 <tomsmeding> hence your handler doesn't fire
2020-11-02 22:20:28 +0100 <bqv> what on earth
2020-11-02 22:20:37 +0100 <geekosaur67> that's documented
2020-11-02 22:20:44 +0100 <geekosaur67> go read the signalfd4 manpage
2020-11-02 22:21:10 +0100 <tomsmeding> geekosaur67: I think bqv is not reacting to the syscalls' behaviour, but the behaviour of the library he's using
2020-11-02 22:21:18 +0100 <bqv> yeah
2020-11-02 22:21:38 +0100 <bqv> oh interesting, i think i know what call's doing that
2020-11-02 22:21:41 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-02 22:21:46 +0100 <bqv> maybe if i put the handler after that then
2020-11-02 22:21:49 +0100tms_(thomaav@cassarossa.samfundet.no) (Ping timeout: 264 seconds)
2020-11-02 22:22:01 +0100 <geekosaur67> I expect it just lists out all the non-SIG_DFL signals and does the signalfd4() thing on them
2020-11-02 22:22:08 +0100 <geekosaur67> so it's just not expecting your handler
2020-11-02 22:22:25 +0100 <bqv> well actually, to be honest that's perfectly reasonable behaviour, i was just confused as to how it was occuring
2020-11-02 22:22:37 +0100 <bqv> but as long as nothing's broken, i can live with just setting an ignore handler
2020-11-02 22:22:38 +0100 <tomsmeding> geekosaur67: it specifically only does it for CHLD and USR1
2020-11-02 22:23:08 +0100u0_a298`(~user@47.206.148.226) (Ping timeout: 256 seconds)
2020-11-02 22:23:15 +0100 <tomsmeding> probably that's the best approach bqv
2020-11-02 22:23:53 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 22:24:05 +0100 <tomsmeding> note that process 1691972 also puts a SIG_BLOCK on USR1 at line 3922, but that's for a different process (not sure which)
2020-11-02 22:24:26 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-02 22:24:29 +0100 <bqv> yes, by my guess, one is for my process, one is for Xwayland
2020-11-02 22:25:39 +0100 <tomsmeding> ah at some point your haskell process (but really the library probably) forks to 1692017, puts a SIG_IGN handler on USR1, and then exec's Xwayland
2020-11-02 22:25:56 +0100 <tomsmeding> so it's not the block that's the culprit, it's that overwrite
2020-11-02 22:25:59 +0100 <tomsmeding> I think
2020-11-02 22:26:08 +0100 <tomsmeding> (line 13615)
2020-11-02 22:26:28 +0100Franciman(~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving)
2020-11-02 22:26:37 +0100 <bqv> I actually estimate i might be able to still hook into the signal, because it looks like it's fed into the wayland event loop
2020-11-02 22:27:02 +0100 <bqv> it'll just look bizarre that i set the signal to ignore on one line and then hook into it using a completely different mechanism a few lines below
2020-11-02 22:27:10 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 22:27:13 +0100 <bqv> thanks, wayland
2020-11-02 22:27:20 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Remote host closed the connection)
2020-11-02 22:27:35 +0100 <tomsmeding> that's what a code comment is for :)
2020-11-02 22:27:39 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com)
2020-11-02 22:28:02 +0100 <tomsmeding> nice search, thanks for the evening entertainment bqv
2020-11-02 22:28:10 +0100 <bqv> bah, nah, didn't work
2020-11-02 22:28:15 +0100 <bqv> hehe, no problem
2020-11-02 22:28:27 +0100tms_(thomaav@cassarossa.samfundet.no)
2020-11-02 22:28:38 +0100z0(~z0@188.250.0.59)
2020-11-02 22:28:43 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 22:29:13 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 22:29:50 +0100 <tomsmeding> so in hindsight, strace/ltrace/gdb probably "fixed" the problem by handling signals or something?
2020-11-02 22:32:47 +0100acidjnk_new2(~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de)
2020-11-02 22:32:55 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-02 22:32:58 +0100 <bqv> yeah, exactly
2020-11-02 22:34:24 +0100acidjnk_new(~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-02 22:36:02 +0100solonarv(~solonarv@astrasbourg-653-1-117-122.w90-33.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2020-11-02 22:36:06 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 22:37:41 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-02 22:37:44 +0100geekosaur67(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-11-02 22:38:35 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 22:39:15 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 22:39:47 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-02 22:41:18 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-02 22:41:36 +0100xwvvvvwx-(~xwvvvvwx@45.129.56.198)
2020-11-02 22:44:28 +0100xwvvvvwx(~xwvvvvwx@185.213.155.160) (Ping timeout: 272 seconds)
2020-11-02 22:44:28 +0100xwvvvvwx-xwvvvvwx
2020-11-02 22:47:53 +0100zebrag(~inkbottle@aaubervilliers-654-1-104-94.w86-212.abo.wanadoo.fr)
2020-11-02 22:48:15 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 22:49:12 +0100inkbottle(~inkbottle@aaubervilliers-654-1-1-110.w83-200.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2020-11-02 22:49:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-02 22:52:58 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-02 22:54:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-02 22:57:25 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds)
2020-11-02 22:59:22 +0100obihann(~jhann@156.34.160.69)
2020-11-02 22:59:54 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-02 23:00:22 +0100Rudd0(~Rudd0@185.189.115.98)
2020-11-02 23:00:28 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 23:00:30 +0100knupfer(~Thunderbi@200116b82c45b3000805a93423d8669d.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2020-11-02 23:01:23 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 23:02:46 +0100mmohammadi9812(~mmohammad@188.210.118.100) (Quit: Quit)
2020-11-02 23:03:11 +0100mmohammadi9812(~mmohammad@188.210.118.100)
2020-11-02 23:04:24 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds)
2020-11-02 23:05:26 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-02 23:07:05 +0100prozion(b29b04cd@gateway/web/cgi-irc/kiwiirc.com/ip.178.155.4.205)
2020-11-02 23:07:15 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-02 23:09:10 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-02 23:10:03 +0100vacm(~vacwm@70.23.92.191)
2020-11-02 23:11:33 +0100kupi(uid212005@gateway/web/irccloud.com/x-izotevyprbcyotcz)
2020-11-02 23:12:07 +0100 <Cheery> Is there any libraries written for text layouting/typesetting in haskell?
2020-11-02 23:12:10 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 23:13:11 +0100 <Uniaika> hmm, not that I know of
2020-11-02 23:13:41 +0100 <dsal> HaTeX
2020-11-02 23:13:51 +0100 <Cheery> I am curious because I wnoder what structure of something like XML/HTML is necessary.
2020-11-02 23:14:02 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
2020-11-02 23:14:06 +0100 <dsal> If it doesn't exist... that's probably fine.
2020-11-02 23:14:23 +0100 <Cheery> HaX
2020-11-02 23:14:34 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 23:14:48 +0100 <Cheery> there's luispedro's hex
2020-11-02 23:15:03 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 258 seconds)
2020-11-02 23:15:13 +0100 <Cheery> it says not complete
2020-11-02 23:15:50 +0100daydaynatation(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-11-02 23:18:05 +0100flatmap(~flatmap@p200300dd370a4700ac5fe25fa28a3bcb.dip0.t-ipconnect.de)
2020-11-02 23:18:21 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-11-02 23:18:24 +0100flatmap(~flatmap@p200300dd370a4700ac5fe25fa28a3bcb.dip0.t-ipconnect.de) (Client Quit)
2020-11-02 23:19:42 +0100coot_(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
2020-11-02 23:20:06 +0100 <Cheery> Hm. I could port my reimplementation
2020-11-02 23:21:02 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 23:21:27 +0100coot(~coot@37.30.52.148.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds)
2020-11-02 23:21:28 +0100coot_coot
2020-11-02 23:22:23 +0100 <Cheery> hatred, haskell typesetting
2020-11-02 23:22:56 +0100 <jackdk> is there a canonical two-type-arg version of `Proxy`?
2020-11-02 23:23:32 +0100prozion(b29b04cd@gateway/web/cgi-irc/kiwiirc.com/ip.178.155.4.205) (Quit: Connection closed)
2020-11-02 23:23:33 +0100obihann(~jhann@156.34.160.69) (Quit: Lost terminal)
2020-11-02 23:23:34 +0100 <gobbleguy> Proxy (x,y)? :)
2020-11-02 23:23:56 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-faekvzqkhmohaswr)
2020-11-02 23:25:10 +0100 <kupi> hi
2020-11-02 23:25:23 +0100obihann(~jhann@156.34.160.69)
2020-11-02 23:25:24 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-02 23:25:29 +0100 <jackdk> gobbleguy: ha. I'm considering a type like `data P p q f g a b = P (p a (f b)) (q b (g a))`, with the idea that generally you have `p ~ q ~ (->)` but if you need to give up roundtripping, you can kill one side or the other by putting a `data Proxy2 a b = Proxy2` in for `p` or `q`
2020-11-02 23:25:33 +0100 <kupi> here https://hackage.haskell.org/package/base-4.14.0.0/docs/src/Data.Foldable.html#foldlM how foldr is called with 4 parameters? when I click the definition it only shows 3
2020-11-02 23:26:21 +0100 <jackdk> kupi: note the function `return` is passed in, so the result of the fold is itself a function
2020-11-02 23:26:30 +0100N3RGY(~N3RGY@65.141.87.122)
2020-11-02 23:26:41 +0100 <jackdk> Cheery: consider looking at pretty-printer libraries and/or pandoc?
2020-11-02 23:26:54 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 272 seconds)
2020-11-02 23:27:37 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-02 23:27:50 +0100ffej(~ffej@195.206.169.184)
2020-11-02 23:28:02 +0100 <kupi> so f a b is the same as (f a) b?
2020-11-02 23:28:10 +0100obihann(~jhann@156.34.160.69) (Client Quit)
2020-11-02 23:28:29 +0100PerseusPlease(~{mikey}@212.86.35.157)
2020-11-02 23:28:35 +0100 <PerseusPlease> hi.
2020-11-02 23:29:15 +0100 <jackdk> kupi: if you're talking about function application, yes. It associates to the left
2020-11-02 23:29:58 +0100 <PerseusPlease> Super basic question. For a given module (in this case Data.Binary.Get) how do I know what name needs to go in build-depends? I haven't been able to assign rhyme or reason to it so far
2020-11-02 23:30:07 +0100 <PerseusPlease> ?
2020-11-02 23:30:19 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-02 23:30:43 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 268 seconds)
2020-11-02 23:31:06 +0100 <jackdk> PerseusPlease: this one? https://hackage.haskell.org/package/binary-0.10.0.0/docs/Data-Binary-Get.html
2020-11-02 23:31:58 +0100 <PerseusPlease> yep. but could just as well apply as a question to any of the modules I've included so far, I've been able to guess on the others but they often don't make sense
2020-11-02 23:34:27 +0100 <jackdk> The package name is `binary`. If you click "Contents" in the top-right, it takes you to the top-level page for that package. The name also appears in the top-left of a module's documentation (`binary-0.10.0.0: Binary serialization for Haskell values using lazy ByteStrings`) and in the URL on hackage haddocks
2020-11-02 23:34:59 +0100 <PerseusPlease> thank you!
2020-11-02 23:35:10 +0100 <PerseusPlease> that will make life much easier.
2020-11-02 23:35:52 +0100 <jackdk> welcome
2020-11-02 23:37:06 +0100dustypacer(~pi@137-025-112-171.res.spectrum.com)
2020-11-02 23:38:20 +0100 <monochrom> The URL already contains the package name.
2020-11-02 23:38:48 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-02 23:39:10 +0100vacm(~vacwm@70.23.92.191)
2020-11-02 23:39:25 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-02 23:40:47 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-02 23:42:02 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-02 23:42:59 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-11-02 23:43:03 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-02 23:43:48 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-11-02 23:44:38 +0100son0p(~son0p@181.136.122.143) (Quit: leaving)
2020-11-02 23:45:59 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-02 23:47:00 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-02 23:47:27 +0100alx741(~alx741@186.178.110.193)
2020-11-02 23:47:59 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-02 23:48:34 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-02 23:49:08 +0100 <dibblego> foldr takes 1 parameter
2020-11-02 23:50:20 +0100 <PerseusPlease> monochrom, ah yes so it does, now that I know what I'm looking for.
2020-11-02 23:50:27 +0100mokulus(~mat@176.111.230.96) (Ping timeout: 268 seconds)
2020-11-02 23:52:07 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-02 23:52:13 +0100 <koz_> Is there a way to get all transitive deps of a Hackage package?
2020-11-02 23:52:57 +0100 <N3RGY> koz_: maybe cabal-dependency-licenses ?
2020-11-02 23:53:02 +0100N3RGY(~N3RGY@65.141.87.122) ()
2020-11-02 23:53:12 +0100 <monochrom> Yikes haha
2020-11-02 23:53:53 +0100 <monochrom> But I use "cabal freeze" (but I have to first write a foo.cabal that has a build-depends line for the starting point)
2020-11-02 23:54:43 +0100 <monochrom> So yeah, basically hacks and hammers that solve a much bigger problem and get you the transitive closure as a side effect.
2020-11-02 23:54:54 +0100 <koz_> OK, a different question: I have a .prof that says a particular function is eating a lot of time. However, I assume it's being called _by_ something. Is there an easy way to tell what's calling said function? I can't quite make sense of the .prof layout.
2020-11-02 23:56:00 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 268 seconds)
2020-11-02 23:57:59 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-02 23:58:12 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)