Home liberachat/#haskell: Logs Calendar

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

00:04:36 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
00:05:46 ezzieygu1wuf joins (~Unknown@user/ezzieyguywuf)
00:09:59 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
00:10:59 × ezzieygu1wuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
00:15:03 ezzieygu1wuf joins (~Unknown@user/ezzieyguywuf)
00:17:00 freeside joins (~mengwong@103.252.202.193)
00:17:31 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
00:21:23 rockystone joins (~rocky@user/rockymarine)
00:23:36 × mmhat quits (~mmh@p200300f1c7337736ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7)
00:24:23 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
00:29:34 × inversed quits (~inversed@90.209.137.56) (Read error: No route to host)
00:30:13 × TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Quit: Leaving)
00:33:35 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 268 seconds)
00:33:52 inversed joins (~inversed@90.209.137.56)
00:39:44 × ezzieygu1wuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
00:52:16 freeside_ joins (~mengwong@103.252.202.193)
00:54:27 × mesaoptimizer quits (apotheosis@user/PapuaHardyNet) (Ping timeout: 248 seconds)
00:54:27 × madnight quits (~madnight@static.59.103.201.195.clients.your-server.de) (Ping timeout: 248 seconds)
00:54:49 madnight joins (~madnight@static.59.103.201.195.clients.your-server.de)
00:54:59 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
00:54:59 × kmein quits (~weechat@user/kmein) (Ping timeout: 248 seconds)
00:54:59 × bcoppens quits (~bartcopp@vpn2.bartcoppens.be) (Ping timeout: 248 seconds)
00:55:03 gabiruh_ joins (~gabiruh@vps19177.publiccloud.com.br)
00:55:06 bcoppens joins (~bartcopp@vpn2.bartcoppens.be)
00:55:31 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 248 seconds)
00:57:23 kmein joins (~weechat@user/kmein)
00:58:13 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
00:59:49 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:59:49 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:59:49 wroathe joins (~wroathe@user/wroathe)
00:59:52 wroathe_ joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:01:59 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:03:01 × mikoto-chan quits (~mikoto-ch@dsl-hkibng32-50dcba-150.dhcp.inet.fi) (Ping timeout: 260 seconds)
01:03:22 vglfr joins (~vglfr@145.224.100.100)
01:10:18 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:11:31 TonyStone joins (~TonyStone@74.76.51.197)
01:14:21 Lumia joins (~Lumia@c-24-34-172-110.hsd1.ma.comcast.net)
01:16:25 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:20:08 nate1 joins (~nate@98.45.169.16)
01:20:29 × Lumia quits (~Lumia@c-24-34-172-110.hsd1.ma.comcast.net) (Changing host)
01:20:29 Lumia joins (~Lumia@user/Lumia)
01:21:39 × raym quits (~aritra@user/raym) (Ping timeout: 248 seconds)
01:23:51 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
01:24:01 × freeside_ quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
01:24:59 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
01:27:06 freeside joins (~mengwong@103.252.202.193)
01:27:25 raym joins (~aritra@user/raym)
01:30:34 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
01:31:36 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
01:35:02 × inversed quits (~inversed@90.209.137.56) (Read error: Connection reset by peer)
01:35:31 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:253c:9364:4f2a:ce74)
01:37:55 inversed joins (~inversed@90.209.137.56)
01:38:16 × xff0x quits (~xff0x@2405:6580:b080:900:1291:8fa4:a381:47f3) (Ping timeout: 246 seconds)
01:38:20 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Quit: leaving)
01:39:47 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:253c:9364:4f2a:ce74) (Ping timeout: 248 seconds)
01:44:27 razetime joins (~quassel@117.193.6.127)
01:45:43 jargon joins (~jargon@184.101.208.112)
01:47:12 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 264 seconds)
01:54:00 × Lumia quits (~Lumia@user/Lumia) (Quit: ,-)
02:02:12 × grymzu quits (~zymurgy@user/zymurgy) (Ping timeout: 264 seconds)
02:04:18 grymzu joins (~zymurgy@user/zymurgy)
02:17:25 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
02:18:25 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
02:19:15 × td_ quits (~td@83.135.9.44) (Ping timeout: 248 seconds)
02:21:03 td_ joins (~td@83.135.9.59)
02:23:49 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:25:55 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
02:31:55 yuzhao joins (~yuzhao@36.112.45.77)
02:32:05 rockystone joins (~rocky@user/rockymarine)
02:32:35 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
02:32:47 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
02:33:02 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:33:53 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:253c:9364:4f2a:ce74)
02:37:31 × yuzhao quits (~yuzhao@36.112.45.77) (Ping timeout: 260 seconds)
02:40:37 × vglfr quits (~vglfr@145.224.100.100) (Ping timeout: 268 seconds)
02:40:58 vglfr joins (~vglfr@145.224.100.100)
02:49:21 ezzieygu1wuf joins (~Unknown@user/ezzieyguywuf)
02:59:31 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:00:24 freeside joins (~mengwong@103.252.202.193)
03:01:25 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
03:05:01 nate1 joins (~nate@98.45.169.16)
03:07:51 × vglfr quits (~vglfr@145.224.100.100) (Ping timeout: 260 seconds)
03:08:03 LukeHoersten joins (~LukeHoers@user/lukehoersten)
03:11:49 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
03:12:20 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
03:13:18 zmt00 joins (~zmt00@user/zmt00)
03:16:16 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Remote host closed the connection)
03:19:59 rockystone joins (~rocky@user/rockymarine)
03:22:13 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:23:40 × wroathe_ quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Ping timeout: 268 seconds)
03:23:40 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
03:26:57 yuzhao joins (~yuzhao@36.112.45.77)
03:27:49 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
03:32:13 × yuzhao quits (~yuzhao@36.112.45.77) (Ping timeout: 252 seconds)
03:32:54 vglfr joins (~vglfr@145.224.100.100)
03:39:39 Lumia joins (~Lumia@user/Lumia)
03:39:40 × Vajb quits (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) (Read error: Connection reset by peer)
03:40:12 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
03:46:19 × ksu quits (~ksu@user/prtr) (Ping timeout: 250 seconds)
03:48:06 × ircbrowse_tom quits (~ircbrowse@2a01:4f8:1c1c:9319::1) (ZNC 1.8.2+deb2build5 - https://znc.in)
03:49:38 ircbrowse_tom joins (~ircbrowse@2a01:4f8:1c1c:9319::1)
03:49:39 Server sets mode +Cnt
03:49:47 haskl joins (~haskl@user/haskl)
03:49:48 Unode joins (~Unode@194.94.44.220)
03:49:48 FurudeRika[m] joins (~chitandae@2001:470:69fc:105::1:6039)
03:49:49 stefan-_ joins (~cri@42dots.de)
03:49:52 m5zs7k joins (aquares@web10.mydevil.net)
03:49:58 fjmorazan joins (~quassel@user/fjmorazan)
03:50:01 taeaad joins (~taeaad@user/taeaad)
03:50:58 Maja joins (~quassel@178-37-215-128.adsl.inetia.pl)
03:51:22 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
03:51:30 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
03:51:33 srk joins (~sorki@user/srk)
03:51:34 BB[m] joins (~cashmagem@2001:470:69fc:105::f6dc)
03:51:53 sektor[m] joins (~sektor@2001:470:69fc:105::2:3f60)
03:53:01 ksu joins (~ksu@user/prtr)
03:53:07 thaumavorio joins (~thaumavor@thaumavor.io)
03:53:09 expipiplus1 joins (~expipiplu@2001:470:69fc:105::d713)
03:53:13 CeNiEi[m] joins (~cenieimat@2001:470:69fc:105::1:894c)
03:53:28 koolazer joins (~koo@user/koolazer)
03:53:29 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
03:53:34 rockymarine[m] joins (~rockymari@2001:470:69fc:105::2:9a0c)
03:53:37 xstill_ joins (xstill@fimu/xstill)
03:54:05 cafkafk[m] joins (~cafkafkma@2001:470:69fc:105::1:cea8)
03:54:24 × jargon quits (~jargon@184.101.208.112) (Remote host closed the connection)
03:54:59 nate1 joins (~nate@98.45.169.16)
03:55:06 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
03:55:41 × razetime quits (~quassel@117.193.6.127) (Ping timeout: 260 seconds)
03:56:51 Inoperable joins (~PLAYER_1@fancydata.science)
03:57:43 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
03:59:19 MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417)
03:59:37 kenran joins (~user@user/kenran)
04:01:10 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
04:04:19 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
04:05:36 × jrm quits (~jrm@user/jrm) (Ping timeout: 260 seconds)
04:10:36 mbuf joins (~Shakthi@49.204.129.148)
04:11:26 × bgamari_ quits (~bgamari@64.223.236.29) (Ping timeout: 260 seconds)
04:13:13 freeside joins (~mengwong@103.252.202.193)
04:13:20 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
04:13:42 Vajb joins (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57)
04:16:02 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
04:16:45 chexum joins (~quassel@gateway/tor-sasl/chexum)
04:17:44 bgamari joins (~bgamari@64.223.227.132)
04:22:32 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
04:24:45 jonathanx_ joins (~jonathan@178.174.176.109)
04:27:11 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 268 seconds)
04:29:29 × vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer)
04:29:39 vglfr joins (~vglfr@145.224.100.100)
04:31:22 × Lumia quits (~Lumia@user/Lumia) (Remote host closed the connection)
04:31:24 × kenran quits (~user@user/kenran) (Remote host closed the connection)
04:31:47 Lumia joins (~Lumia@user/Lumia)
04:34:37 nate1 joins (~nate@98.45.169.16)
04:36:04 mixfix41 joins (~sdenynine@user/mixfix41)
04:37:39 razetime joins (~quassel@117.193.6.127)
04:38:25 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
04:39:13 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds)
04:46:04 jrm joins (~jrm@user/jrm)
04:52:53 Luj3 joins (~Luj@2a01:e0a:5f9:9681:8b6a:8ece:3740:1a44)
05:00:05 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:07:18 × frase quits (~Fraser@159.196.13.21) (Ping timeout: 264 seconds)
05:07:36 × mbuf quits (~Shakthi@49.204.129.148) (Ping timeout: 264 seconds)
05:07:49 mbuf joins (~Shakthi@49.204.132.253)
05:08:52 frase joins (~Fraser@159.196.13.21)
05:09:40 × Lumia quits (~Lumia@user/Lumia) (Ping timeout: 246 seconds)
05:10:21 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 260 seconds)
05:16:21 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
05:21:33 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
05:22:40 rockystone joins (~rocky@user/rockymarine)
05:27:31 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 246 seconds)
05:33:57 rockystone joins (~rocky@user/rockymarine)
05:48:16 × raym quits (~aritra@user/raym) (Ping timeout: 260 seconds)
05:48:30 raym joins (~aritra@user/raym)
05:51:47 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
05:54:06 × raym quits (~aritra@user/raym) (Ping timeout: 264 seconds)
05:55:25 kenran joins (~user@user/kenran)
05:56:58 yuzhao joins (~yuzhao@36.112.45.77)
05:59:49 raym joins (~aritra@user/raym)
06:01:07 × yuzhao quits (~yuzhao@36.112.45.77) (Ping timeout: 246 seconds)
06:05:19 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 246 seconds)
06:08:46 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
06:12:00 yuzhao joins (~yuzhao@36.112.45.77)
06:13:46 chomwitt joins (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1)
06:15:31 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:18:25 rockystone joins (~rocky@user/rockymarine)
06:20:22 × yuzhao quits (~yuzhao@36.112.45.77) (Ping timeout: 246 seconds)
06:20:56 × FragByte quits (~christian@user/fragbyte) (Ping timeout: 260 seconds)
06:20:57 × vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer)
06:21:04 vglfr joins (~vglfr@145.224.100.100)
06:21:27 FragByte joins (~christian@user/fragbyte)
06:26:02 mesaoptimizer joins (apotheosis@user/PapuaHardyNet)
06:26:35 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
06:28:26 × caryhartline quits (~caryhartl@2600:1700:2d0:8d30:5cd5:afa2:55e9:2fce) (Quit: caryhartline)
06:31:50 × asm quits (~alexander@burner.asm89.io) (Changing host)
06:31:50 asm joins (~alexander@user/asm)
06:34:33 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
06:35:20 axeman joins (~quassel@2a02:8109:a380:78:7a17:29e5:d092:ea5d)
06:38:48 vn36_ joins (~vn36@123.63.203.210)
06:41:44 × axeman quits (~quassel@2a02:8109:a380:78:7a17:29e5:d092:ea5d) (Ping timeout: 268 seconds)
06:43:49 lortabac joins (~lortabac@2a01:e0a:541:b8f0:6f7e:524f:cc40:2955)
06:45:57 mmhat joins (~mmh@p200300f1c7337736ee086bfffe095315.dip0.t-ipconnect.de)
06:47:38 jakalx parts (~jakalx@base.jakalx.net) ()
06:51:32 × chomwitt quits (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
06:51:57 chomwitt joins (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1)
06:54:11 jakalx joins (~jakalx@base.jakalx.net)
06:57:33 axeman joins (~quassel@2a02:8109:a380:78:bc4:6f73:24d5:f1f3)
06:57:34 kenran` joins (~user@user/kenran)
06:59:48 × kenran quits (~user@user/kenran) (Ping timeout: 264 seconds)
07:02:27 cfricke joins (~cfricke@user/cfricke)
07:03:12 × axeman quits (~quassel@2a02:8109:a380:78:bc4:6f73:24d5:f1f3) (Ping timeout: 268 seconds)
07:07:00 × mbuf quits (~Shakthi@49.204.132.253) (Ping timeout: 264 seconds)
07:07:18 mbuf joins (~Shakthi@49.204.139.143)
07:10:53 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
07:11:56 acidjnk joins (~acidjnk@p200300d6e7137a08b4dee3a6debde38e.dip0.t-ipconnect.de)
07:20:48 × thegeekinside quits (~thegeekin@189.180.97.156) (Ping timeout: 264 seconds)
07:21:19 CiaoSen joins (~Jura@p200300c9570723002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
07:22:41 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
07:34:13 × vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer)
07:35:01 vglfr joins (~vglfr@145.224.100.100)
07:36:27 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:37:55 gmg joins (~user@user/gehmehgeh)
07:42:24 Midjak joins (~Midjak@82.66.147.146)
07:49:36 × vn36_ quits (~vn36@123.63.203.210) (Ping timeout: 260 seconds)
07:54:47 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
07:56:23 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:01:08 nate1 joins (~nate@98.45.169.16)
08:06:13 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
08:06:46 freeside joins (~mengwong@151.192.73.74)
08:09:02 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
08:09:14 aliosablack joins (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1)
08:09:53 × chomwitt quits (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1) (Read error: Connection reset by peer)
08:10:24 chexum joins (~quassel@gateway/tor-sasl/chexum)
08:11:43 MajorBiscuit joins (~MajorBisc@145.94.160.95)
08:16:36 vn36__ joins (~vn36@123.63.203.210)
08:19:11 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:253c:9364:4f2a:ce74) (Remote host closed the connection)
08:21:38 yvan-sraka joins (~yvan-srak@ip-185-104-137-32.ptr.icomera.net)
08:30:26 × vn36__ quits (~vn36@123.63.203.210) (Ping timeout: 260 seconds)
08:31:50 mastarija joins (~mastarija@2a05:4f46:e03:6000:450:24db:a030:2d0b)
08:32:42 <mastarija> Are there any situations where GHC can't determine if the pattern matching is exhaustive?
08:35:12 × vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer)
08:35:40 vglfr joins (~vglfr@145.224.100.100)
08:35:49 × freeside quits (~mengwong@151.192.73.74) (Ping timeout: 268 seconds)
08:36:14 × yvan-sraka quits (~yvan-srak@ip-185-104-137-32.ptr.icomera.net) (Remote host closed the connection)
08:40:48 <[exa]> mastarija: if you mix in pattern guards stuff gets pretty complex/undecidable. For simple streamlined single-argument patterns the check should be pretty easy (you literally just check the data constructor coverage)
08:42:28 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 246 seconds)
08:44:15 × loras quits (~loras@c-73-139-125-125.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
08:44:30 yvan-sraka joins (~yvan-srak@ip-185-104-137-32.ptr.icomera.net)
08:46:16 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:46:41 × off^ quits (~off@c-76-17-6-165.hsd1.ga.comcast.net) (Remote host closed the connection)
08:50:04 <mastarija> Thanks!
08:54:56 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7)
08:57:19 azimut joins (~azimut@gateway/tor-sasl/azimut)
08:58:01 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
08:58:37 vglfr joins (~vglfr@145.224.100.100)
09:03:17 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
09:05:23 <[exa]> mastarija: btw there are some papers around that concern compiling the pattern matches that involve multiple arguments, which is IIRC sometimes pretty hard to optimize. such as this https://dl.acm.org/doi/abs/10.1145/1411304.1411311
09:05:45 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:05:55 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 246 seconds)
09:06:35 <mastarija> mastarija: likes the paper
09:06:54 <mastarija> mastarija, test?
09:06:55 vglfr joins (~vglfr@145.224.100.100)
09:10:11 <lortabac> there is also the question of GADTs, for which simple constructor coverage is not enough
09:11:14 freeside joins (~mengwong@103.252.202.193)
09:12:49 × aliosablack quits (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1) (Quit: Leaving)
09:13:09 chomwitt joins (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1)
09:16:16 freeside_ joins (~mengwong@bb115-66-48-84.singnet.com.sg)
09:17:12 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 264 seconds)
09:17:12 × yvan-sraka quits (~yvan-srak@ip-185-104-137-32.ptr.icomera.net) (Remote host closed the connection)
09:17:52 rockystone joins (~rocky@user/rockymarine)
09:19:40 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e)
09:20:21 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
09:22:36 vglfr joins (~vglfr@145.224.100.100)
09:22:58 × inversed quits (~inversed@90.209.137.56) (Quit: Connection error?!)
09:24:49 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e) (Ping timeout: 246 seconds)
09:26:39 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
09:26:45 inversed joins (~inversed@90.209.137.56)
09:27:33 vglfr joins (~vglfr@145.224.100.100)
09:27:49 × ft quits (~ft@62.155.200.69) (Quit: leaving)
09:35:23 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
09:37:04 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 246 seconds)
09:37:12 × finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer)
09:39:16 × MajorBiscuit quits (~MajorBisc@145.94.160.95) (Ping timeout: 260 seconds)
09:39:40 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
09:40:26 __monty__ joins (~toonn@user/toonn)
09:41:12 <merijn> mastarija: "Are tehre any situations?" -> yes
09:41:39 vglfr joins (~vglfr@145.224.100.100)
09:41:55 <merijn> The number of situations is shrinking, but in general you can probably always construct some niche case that can't be detected
09:42:05 <merijn> At least if you include extensions
09:42:27 frase parts (~Fraser@159.196.13.21) ()
09:43:02 <mastarija> Yes, but some of those would be "bugs". I'm more interested in things that aren't bugs but aren't possible to be checked for exhaustiveness.
09:43:33 <merijn> Once you introduce GADTs and type families there's lots of cases where it isn't solvable, I think
09:43:53 <mastarija> lortabac, any simple example of that?
09:44:52 Flow joins (~none@gentoo/developer/flow)
09:48:08 × razetime quits (~quassel@117.193.6.127) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
09:48:14 beteigeuze joins (~Thunderbi@89.187.168.55)
09:48:49 <lortabac> mastarija: this pattern-matching is exhaustive even though it doesn't handle all the constructors https://paste.tomsmeding.com/BQ1Qb5p2
09:49:41 <lortabac> if you try to add a case for 'Foo' you will get a warning
09:49:54 <mastarija> But will Haskell yell at me? If not I'd say it correctly detects patternmatching.
09:50:14 <mastarija> *exhaustiveness
09:50:27 × Midjak quits (~Midjak@82.66.147.146) (Quit: Leaving)
09:51:02 <lortabac> now this was a simple case, but there are more complex cases which GHC can't solve
09:51:04 <mastarija> This makes sense to me. Foo shouldn't be possible.
09:51:38 Midjak joins (~Midjak@82.66.147.146)
09:52:45 <merijn> mastarija: Hold on, there are two possible takes of your question
09:52:57 <lortabac> I have one example with 'Fin' where GHC gives me an incorrect warning, unfortunately I don't think I'm able to paste the entire example right now
09:53:14 <merijn> mastarija: There is "can GHC always tell me if a pattern match is exhaustive?" and "GHC will always tell me if a pattern match is potentially not exhaustive"
09:53:17 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:53:24 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:53:27 <merijn> mastarija: The former is almost certainly not true, the latter should be true
09:53:57 <merijn> mastarija: i.e. there are only false negatives (exhaustive matches reported as non-exhaustive), never false positives (non-exhaustive matches reported as exhaustive)
09:53:59 <mastarija> I'm more like "is there a case where it's not possible to correctly infer exhaustiveness, and GHC will stay silent"
09:54:45 <lortabac> there are cases where the patterns are exhaustive but GHC complains of missing cases
09:54:49 <mastarija> And eventually / potentially result in a runtime error
09:55:36 × CiaoSen quits (~Jura@p200300c9570723002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
09:55:59 <lortabac> but if you get the opposite behavior (GHC thinks that patterns are exhaustive but they aren't) then it's a bug
09:56:30 <lortabac> which is exactly what merijn has just said :D
09:57:04 MajorBiscuit joins (~MajorBisc@145.94.160.95)
10:00:39 <mastarija> Cool. Thanks!
10:00:50 random-jellyfish joins (~random-je@user/random-jellyfish)
10:04:47 rockystone joins (~rocky@user/rockymarine)
10:09:36 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
10:13:36 × raym quits (~aritra@user/raym) (Ping timeout: 264 seconds)
10:13:59 raym joins (~aritra@user/raym)
10:18:06 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
10:18:31 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
10:18:50 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:18:51 vglfr joins (~vglfr@145.224.100.100)
10:20:15 frost16 joins (~frost@user/frost)
10:23:16 × MajorBiscuit quits (~MajorBisc@145.94.160.95) (Ping timeout: 246 seconds)
10:23:30 rockystone joins (~rocky@user/rockymarine)
10:27:35 vn36__ joins (~vn36@123.63.203.210)
10:29:20 mastarija_ joins (~mastarija@2a05:4f46:e03:6000:450:24db:a030:2d0b)
10:32:30 × mastarija quits (~mastarija@2a05:4f46:e03:6000:450:24db:a030:2d0b) (Ping timeout: 264 seconds)
10:35:37 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7)
10:36:05 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
10:39:56 × acidjnk quits (~acidjnk@p200300d6e7137a08b4dee3a6debde38e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:40:41 × mastarija_ quits (~mastarija@2a05:4f46:e03:6000:450:24db:a030:2d0b) (Quit: Leaving)
10:47:22 Everything joins (~Everythin@37.115.210.35)
10:49:39 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 248 seconds)
10:54:27 × potash quits (~foghorn@user/foghorn) (Read error: Connection reset by peer)
10:54:50 potash joins (~foghorn@user/foghorn)
10:55:20 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
10:56:24 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
11:11:51 MajorBiscuit joins (~MajorBisc@145.94.160.95)
11:14:48 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
11:17:12 acidjnk joins (~acidjnk@p200300d6e7137a08b4dee3a6debde38e.dip0.t-ipconnect.de)
11:17:53 × MajorBiscuit quits (~MajorBisc@145.94.160.95) (Read error: Connection reset by peer)
11:18:26 MajorBiscuit joins (~MajorBisc@145.94.160.95)
11:18:35 cfricke joins (~cfricke@user/cfricke)
11:21:29 × MajorBiscuit quits (~MajorBisc@145.94.160.95) (Client Quit)
11:25:37 MajorBiscuit joins (~MajorBisc@145.94.160.95)
11:26:01 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
11:26:06 DavidBinder joins (~DavidBind@134.2.10.18)
11:30:10 akegalj joins (~akegalj@213.202.90.118)
11:33:46 CiaoSen joins (~Jura@p200300c9570723002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:36:59 Kaiepi joins (~Kaiepi@108.175.84.104)
11:38:49 rockystone joins (~rocky@user/rockymarine)
11:43:56 stackdroid18 joins (14094@user/stackdroid)
11:44:39 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
11:45:15 xff0x joins (~xff0x@2405:6580:b080:900:6701:db86:2182:5220)
11:47:30 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 264 seconds)
11:48:49 notzmv joins (~zmv@user/notzmv)
11:55:11 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 260 seconds)
11:58:46 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
12:00:21 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
12:00:27 rockystone joins (~rocky@user/rockymarine)
12:00:35 mesaoptimizer2 joins (~mesaoptim@user/PapuaHardyNet)
12:00:58 rembo10 joins (~rembo10@main.remulis.com)
12:01:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:02:11 razetime joins (~quassel@117.193.6.127)
12:02:11 nate1 joins (~nate@98.45.169.16)
12:06:33 × vn36__ quits (~vn36@123.63.203.210) (Ping timeout: 246 seconds)
12:07:02 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
12:18:08 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 258 seconds)
12:19:59 × euandreh quits (~euandreh@179.214.113.107) (Quit: WeeChat 3.6)
12:20:07 vn36__ joins (~vn36@123.63.203.210)
12:22:54 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e)
12:27:24 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e) (Ping timeout: 264 seconds)
12:27:56 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
12:28:24 jero98772 joins (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c)
12:29:38 rockystone joins (~rocky@user/rockymarine)
12:31:05 chexum joins (~quassel@gateway/tor-sasl/chexum)
12:31:32 kuribas joins (~user@silversquare.silversquare.eu)
12:35:16 Neuromancer joins (~Neuromanc@user/neuromancer)
12:35:39 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
12:36:40 × haskl quits (~haskl@user/haskl) (Read error: Connection reset by peer)
12:40:18 × CiaoSen quits (~Jura@p200300c9570723002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
12:42:26 × MajorBiscuit quits (~MajorBisc@145.94.160.95) (Ping timeout: 260 seconds)
12:51:31 CiaoSen joins (~Jura@p200300c9570723002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:56:40 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
12:57:56 MajorBiscuit joins (~MajorBisc@145.94.160.95)
12:58:16 littlefinger joins (~littlefin@pool-74-102-98-242.nwrknj.fios.verizon.net)
13:00:30 L29Ah joins (~L29Ah@wikipedia/L29Ah)
13:01:40 LukeHoersten joins (~LukeHoers@user/lukehoersten)
13:02:30 shriekingnoise joins (~shrieking@186.137.167.202)
13:10:16 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
13:11:07 × kuribas quits (~user@silversquare.silversquare.eu) (Read error: Connection reset by peer)
13:11:20 kuribas joins (~user@silversquare.silversquare.eu)
13:14:28 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:15:10 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:18:04 × kuribas quits (~user@silversquare.silversquare.eu) (Read error: Connection reset by peer)
13:19:08 kuribas joins (~user@silversquare.silversquare.eu)
13:23:07 × Ranhir quits (~Ranhir@157.97.53.139) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
13:25:21 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
13:25:44 thegeekinside joins (~thegeekin@189.180.97.156)
13:26:35 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: o/)
13:27:56 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 260 seconds)
13:28:49 × acidjnk quits (~acidjnk@p200300d6e7137a08b4dee3a6debde38e.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
13:29:09 acidjnk joins (~acidjnk@p200300d6e7137a08b4dee3a6debde38e.dip0.t-ipconnect.de)
13:29:49 × vn36__ quits (~vn36@123.63.203.210) (Ping timeout: 246 seconds)
13:30:48 Ranhir joins (~Ranhir@157.97.53.139)
13:30:59 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
13:31:57 geekosaur joins (~geekosaur@xmonad/geekosaur)
13:32:14 vn36__ joins (~vn36@123.63.203.210)
13:32:29 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
13:33:55 × kuribas quits (~user@silversquare.silversquare.eu) (Remote host closed the connection)
13:34:24 m5zs7k joins (aquares@web10.mydevil.net)
13:36:22 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
13:38:50 Sgeo joins (~Sgeo@user/sgeo)
13:42:46 kuribas joins (~user@silversquare.silversquare.eu)
13:45:12 <dminuoso> raehik: It occured to me, that with a bit of lookahead I could have it all: https://gist.github.com/dminuoso/84fc29d4b3c44c056e267b6457938b2c
13:47:42 Bob_Esponja joins (~Bob_Espon@122.red-81-43-10.staticip.rima-tde.net)
13:48:03 × Bob_Esponja quits (~Bob_Espon@122.red-81-43-10.staticip.rima-tde.net) (Read error: Connection reset by peer)
13:50:53 <raehik> dminuoso: nice! out of interest are you using the stateful parser?
13:51:35 <dminuoso> No, while a stateful parser would help a lot, `Int` is just not enough.
13:52:00 <dminuoso> If there was an explicit State RealWorld token embeded inside, I could use IORefs in the reader environment
13:52:04 <dminuoso> But there's not, sadly.
13:53:15 <dminuoso> With sufficient analysis, GHC could swap `f` and `g` around in `f >> g` here
13:53:42 <dminuoso> Though mmm, no actually it cant as long as `f` and `g` can err.
13:55:10 <dminuoso> {-# NOINLINE liftIO #-} liftIO :: IO a -> Parser e a; liftIO act = Parser $ \fp eob s -> unsafePerformIO (act >> pure (OK# s))
13:55:14 <dminuoso> This looks benign, doesnt it?
13:56:28 acidjnk_new joins (~acidjnk@p200300d6e7137a877551a7e8fd85f50e.dip0.t-ipconnect.de)
13:57:05 <raehik> oh that's right, you only get a polymorphic reader environment in the stateful parser
13:57:16 <dminuoso> Yeah, Im not entirely sure why that is the case.
13:57:36 <dminuoso> Given that both Int and a thunk pointer is just a word
13:58:13 <dminuoso> Perhaps it performs worse with STRICT enabled?
13:58:38 <raehik> I seem to recall the stateful parser was more experimental. only recently was the reader env changed from Int to polymorphic
13:58:54 <dminuoso> Ah on github you mean?
13:59:04 <raehik> andras kovacs is very receptive to changes and suggestions
13:59:33 <dminuoso> Honestly, I think Ill rather explore the unsafePerformIO route.
13:59:58 <dminuoso> Its way easier to predict performance with using IORefs inside a parser
14:00:01 × acidjnk quits (~acidjnk@p200300d6e7137a08b4dee3a6debde38e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:00:54 <dminuoso> Added benefit is that you can also use the non-stateful parser and explicitly parse an env around
14:01:11 × CiaoSen quits (~Jura@p200300c9570723002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:01:16 <dminuoso> Which might perform better and generate smaller code since these extra arguments are not inserted everywhere
14:01:52 <raehik> I'm not experienced in that part of Haskell but I'd be super keen to see flatparse put on more weight
14:02:34 <raehik> and more examples of usage
14:03:09 × freeside_ quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
14:09:33 LukeHoersten joins (~LukeHoers@user/lukehoersten)
14:11:54 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
14:12:27 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
14:13:49 × frost16 quits (~frost@user/frost) (Ping timeout: 244 seconds)
14:15:59 CiaoSen joins (~Jura@2003:c9:5707:2300:2a3a:4dff:fe84:dbd5)
14:16:49 × raym quits (~aritra@user/raym) (Ping timeout: 252 seconds)
14:21:32 plasticman joins (~plasticma@pool-165-230-224-156.nat.rutgers.edu)
14:23:10 <plasticman> Hi, I've been trying get all permutations of a list, but I'm getting a "cannot construct the infinite type" error, and I can't figure out why
14:23:19 <plasticman> my code: https://justpaste.it/2vbbc/pdf
14:27:20 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
14:32:15 × vn36__ quits (~vn36@123.63.203.210) (Ping timeout: 268 seconds)
14:33:40 <dminuoso> raehik: There was a very recent benchmark, and flatparse came out far ahead in terms of speed and memory usage.
14:34:00 <dminuoso> It was sadly missing `parsnip` though, which internally is very similar to flatparse
14:34:36 × vglfr quits (~vglfr@145.224.100.100) (Ping timeout: 264 seconds)
14:35:31 vglfr joins (~vglfr@145.224.100.100)
14:36:09 <dminuoso> https://gitlab.com/FinnBender/haskell-parsing-benchmarks
14:36:32 <dminuoso> Most surprising, alex/happy performed quite poorly in time, and especially in terms of memory consumption
14:37:02 <raehik> Wow. Thanks for this
14:37:23 <raehik> surprised to see flatparse beat out a handwritten parser so much
14:37:34 <raehik> (albeit in mem consumption only)
14:37:36 <dminuoso> Well fsvo "handwritten"
14:38:26 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:39:31 <dminuoso> But yeah, the main advantage of flatparse is that it operates directly on a bytestring
14:39:48 <dminuoso> THe handwritten parser uses BS.uncons to generate tokens, which means you are generating a lot of additional allocations
14:40:26 <dminuoso> In typical monadic parser style you do lexing/parsing as one step sort of. It makes the parser much less elegant, but it does save you these extra allocations
14:40:27 <raehik> ah, omitting/"inlining" the tokenizing step is why I like parser combinators
14:40:50 <dminuoso> flatparse does have a really good example, that you can still do a sort of separate lexing/parsing semantically
14:41:20 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
14:41:23 <dminuoso> by having one Lexer module that exposes all the parsers that parse semantic tokens, and one Parser module that ideally only uses parsers from that Lexer module (and combinators from flatparse)
14:41:51 <geekosaur> siiigh, and I thought pastebin.com was bad… pdf, really?
14:42:23 <geekosaur> can't even copy it without the line numbers
14:42:43 <dminuoso> geekosaur: its easy. print it out, cut off the left and top parts of it, and then OCR it back.
14:42:48 <dminuoso> Dont complain now!
14:43:14 mncheck joins (~mncheck@193.224.205.254)
14:44:41 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
14:45:46 <dminuoso> plasticman: The error `cannot construct the infinite type` here arises because it ends up with something like a ~ [a] here, trying to solve that it ends up doing a ~ [a] ~ [[a]] ~ [[[a]]] ~ [[[[a]]]] ... which means whatever it has found has some such infinite type
14:46:00 <geekosaur> anyway, plasticman, looks to me like you have a list comprehension which returns the result of a call to `process` as each element of the result list. this is going to result in `a` unifying with `[a]`
14:46:34 <geekosaur> which constructs an infinite type, as dminuoso said
14:46:38 <plasticman> I see
14:47:12 <plasticman> this is the algorithm I'm using. Maybe a map is needed?
14:47:13 <plasticman> to me like you have a list comprehension which returns the result of a call to `process` as each element of the result list. this is go
14:47:25 <plasticman> sorry https://www.baeldung.com/cs/array-generate-all-permutations#simple-recursive-algorithm
14:47:36 <geekosaur> you may want something like `concatMap` aka `=<<`
14:47:44 <dminuoso> plasticman: You likely want to move `process nperm rperm` into right hand side of the list comprehension
14:48:11 <geekosaur> or more likely what dminuoso said
14:48:16 <dminuoso> [r | e <- eperm, let nperm = cperm ++ [e], let rperm = delete e eperm, r <- process nperm rperm]
14:48:45 <geekosaur> the <- being important as it's "for each" (and si related to `concatMap` that I mentioned)
14:48:54 <dminuoso> plasticman: also note there is a likely typo in that you apply process to both nperm twice.
14:48:57 <geekosaur> *is related
14:49:10 <dminuoso> Oh hold on, you didnt. n and r render so similarly
14:49:23 <dminuoso> Nevermind that last statement.
14:49:53 <dminuoso> raehik: What is funny, is that while I have never learned Prolog, I now understand what `cut` is. :)
14:51:08 <dminuoso> And having that tool is really interesting, because together with `try` and `optional`, you have some really good control over backtracking.
14:52:47 <defanor> Is there a way to prepare files for binary packages (like Debian ones) with Cabal 3.0, while loading build dependencies in its usual way (including Hackage), setting a datadir properly, and preferably moving `data-files` (as defined in .cabal) there? I used to `cabal configure --prefix=/usr` and `cabal copy --destdir=deb` on older versions, but now even --datadir option for cabal configure/build/install doesn't seem
14:52:47 <defanor> to have any effect (the produced executable looks into ~/.cabal/store/ for data files). --installdir works for the binary itself, but not for data files.
14:54:08 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:54:24 <raehik> dminuoso: `cut` is adapted from a Prolog tool? I didn't know people wrote parsers in that lang
14:54:56 <dminuoso> raehik: No rather, it was named because it does a similar thing in prolog
14:55:13 <dminuoso> Instead of thinking `turn failure into error`, think of it as "do not backtrack"
14:55:25 <dminuoso> as in "prevent backtracking"
14:55:27 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Excess Flood)
14:56:25 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
14:56:46 <dminuoso> Im not entirely sure whether it was named correctly in flatparse, as the way you use ! in prolog is closer to `try` I suppose.
14:57:35 <raehik> hm, I see
14:57:39 <dminuoso> Its just a bit strange because in prolog you write code differently
14:58:11 <dminuoso> They do the same thing at the end, because ! in prolog and `cut` in flatparse both are used to prevent extra solutions
14:58:59 <dminuoso> I was having a real bad time initially when porting to flatparse, as all the backtracking didnt work properly until I understood what `cut` really does.
14:59:20 <dminuoso> It would be kind of nice to attach contextual information to failed branches too
14:59:59 <raehik> I didn't have to think about it, my lib mostly uses `cutting` to pile on extra info to errors with little backtracking :D
15:00:12 × mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection)
15:00:17 <dminuoso> Well as soon as you use things like `some` you have to be very careful with backtracking
15:01:30 × akegalj quits (~akegalj@213.202.90.118) (Quit: leaving)
15:03:43 vn36_ joins (~vn36@123.63.203.210)
15:03:48 raym joins (~aritra@user/raym)
15:05:58 <plasticman> now I'm getting a parse error on "process cperm [] = [cperm]"
15:10:29 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7)
15:14:04 × kenran` quits (~user@user/kenran) (Remote host closed the connection)
15:23:31 gaff joins (~gaff@49.207.211.43)
15:23:37 × gaff quits (~gaff@49.207.211.43) (Client Quit)
15:25:18 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e)
15:25:52 Guest83 joins (~Guest83@12.106.62.12)
15:27:57 <Guest83> @free fmap :: (a -> b) -> (F a -> F b)
15:27:57 <lambdabot> g . h = k . f => $map_F g . fmap h = fmap k . $map_F f
15:28:37 × Guest83 quits (~Guest83@12.106.62.12) (Client Quit)
15:29:39 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e) (Ping timeout: 248 seconds)
15:31:15 <plasticman> okay, I just needed to put more spaces
15:31:22 <geekosaur> plasticman, can you show your current code (all of it, not just that line: often parse errors are caused by confusion about an earlier line or by indentation errors relative to a previous line)
15:31:24 <geekosaur> whoops
15:31:37 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
15:31:42 <geekosaur> yes, haskell uses indentation and you must be careful with it
15:32:56 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e)
15:33:48 <plasticman> thank you all for the help
15:36:14 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
15:36:50 vglfr joins (~vglfr@145.224.100.100)
15:37:42 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
15:38:01 × MajorBiscuit quits (~MajorBisc@145.94.160.95) (Ping timeout: 260 seconds)
15:38:25 vglfr joins (~vglfr@145.224.100.100)
15:42:27 × plasticman quits (~plasticma@pool-165-230-224-156.nat.rutgers.edu) (Quit: Leaving)
15:44:14 justache is now known as justHaunted
15:45:51 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:45:54 × DavidBinder quits (~DavidBind@134.2.10.18) (Quit: Leaving)
15:47:00 LukeHoersten joins (~LukeHoers@user/lukehoersten)
15:51:32 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
15:53:11 × vn36_ quits (~vn36@123.63.203.210) (Ping timeout: 260 seconds)
15:54:47 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
15:54:47 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
15:54:47 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
15:55:22 × CiaoSen quits (~Jura@2003:c9:5707:2300:2a3a:4dff:fe84:dbd5) (Quit: CiaoSen)
15:55:43 ChaiTRex joins (~ChaiTRex@user/chaitrex)
15:55:47 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
15:56:33 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:57:35 Tuplanolla joins (~Tuplanoll@91-159-69-245.elisa-laajakaista.fi)
16:02:30 freeside joins (~mengwong@115.66.48.84)
16:02:47 jakalx parts (~jakalx@base.jakalx.net) ()
16:02:56 jakalx joins (~jakalx@base.jakalx.net)
16:03:46 nate1 joins (~nate@98.45.169.16)
16:04:01 vn36__ joins (~vn36@123.63.203.210)
16:06:11 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e) (Remote host closed the connection)
16:07:13 × freeside quits (~mengwong@115.66.48.84) (Ping timeout: 268 seconds)
16:08:39 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
16:09:57 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:12:14 LukeHoersten joins (~LukeHoers@user/lukehoersten)
16:14:14 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:14:30 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:6f7e:524f:cc40:2955) (Quit: WeeChat 2.8)
16:14:34 titibandit joins (~titibandi@xdsl-78-34-208-230.nc.de)
16:19:10 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:20:20 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
16:20:32 × kuribas quits (~user@silversquare.silversquare.eu) (Remote host closed the connection)
16:20:48 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 264 seconds)
16:21:58 LukeHoersten joins (~LukeHoers@user/lukehoersten)
16:22:42 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
16:24:03 ChaiTRex joins (~ChaiTRex@user/chaitrex)
16:26:13 × Midjak quits (~Midjak@82.66.147.146) (Ping timeout: 246 seconds)
16:27:48 vglfr joins (~vglfr@145.224.100.100)
16:31:13 econo joins (uid147250@user/econo)
16:33:07 rockystone joins (~rocky@user/rockymarine)
16:36:56 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
16:37:10 <sclv> defanor: sadly, currently datadir is ignored in v2-build. i think a possible approach would be to `cabal exec bash` to establish an environment with all dependencies built and in scope, and then to use ./Setup configure build and install within that bash shell.
16:37:54 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 264 seconds)
16:38:16 <defanor> sclv: Thanks, I'll try that now.
16:41:48 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
16:44:13 × littlefinger quits (~littlefin@pool-74-102-98-242.nwrknj.fios.verizon.net) (Quit: Client closed)
16:46:43 × razetime quits (~quassel@117.193.6.127) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
16:52:41 <defanor> It fails to pull dependencies as usual that way, as well as with `cabal exec -- runhaskell '-package Cabal' Setup.hs configure --prefix=/usr`. Though perhaps I'll just work around it then, by setting pkg_datadir environment variable and copying the data files using a Makefile instead: either way it's not going to be particularly neat.
16:53:52 <sclv> hrm thats unfortunate
16:53:56 × titibandit quits (~titibandi@xdsl-78-34-208-230.nc.de) (Quit: Leaving.)
16:54:29 <sclv> note that if you had a working setup with v1- commands, those still exist for the time being. i.e. you can do cabal v1-build etc that operates as before
16:56:19 × beteigeuze quits (~Thunderbi@89.187.168.55) (Ping timeout: 246 seconds)
16:58:21 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e)
17:04:26 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:08:13 MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
17:10:55 rockystone joins (~rocky@user/rockymarine)
17:16:01 × MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 260 seconds)
17:16:13 Midjak joins (~Midjak@82.66.147.146)
17:16:34 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:21:56 LukeHoersten joins (~LukeHoers@user/lukehoersten)
17:22:57 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
17:24:18 × berberman quits (~berberman@user/berberman) (Ping timeout: 268 seconds)
17:25:10 zer0bitz joins (~zer0bitz@2001:2003:f748:2000:c97d:2eea:c4af:e43e)
17:25:22 <dminuoso> Well as soon as you use things like `some` you have to be very careful with backtracking
17:25:34 <dminuoso> Oops. sorry, wrong terminal was in focus.
17:27:28 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:28:32 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
17:30:57 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
17:31:06 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:33:24 × vglfr quits (~vglfr@145.224.100.100) (Ping timeout: 264 seconds)
17:33:25 jakalx joins (~jakalx@base.jakalx.net)
17:35:55 × mbuf quits (~Shakthi@49.204.139.143) (Quit: Leaving)
17:36:36 vglfr joins (~vglfr@145.224.100.100)
17:43:51 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:44:27 mc47 joins (~mc47@xmonad/TheMC47)
17:48:19 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 248 seconds)
17:50:12 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
17:54:24 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
17:54:37 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
17:55:37 × vn36__ quits (~vn36@123.63.203.210) (Remote host closed the connection)
17:55:56 vn36__ joins (~vn36@123.63.203.210)
17:58:48 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
18:03:45 kenran joins (~user@user/kenran)
18:06:37 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e) (Remote host closed the connection)
18:13:12 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
18:16:36 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 268 seconds)
18:18:59 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:22:11 ft joins (~ft@p3e9bc845.dip0.t-ipconnect.de)
18:23:02 berberman joins (~berberman@user/berberman)
18:24:51 malte joins (~malte@mal.tc)
18:28:05 × malte quits (~malte@mal.tc) (Remote host closed the connection)
18:29:14 malte joins (~malte@mal.tc)
18:30:45 axeman joins (~quassel@2a02:8109:a380:78:c903:2325:2c4a:e6c1)
18:35:54 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:39:46 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
18:40:30 chexum joins (~quassel@gateway/tor-sasl/chexum)
18:43:00 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
18:44:41 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
18:45:42 × axeman quits (~quassel@2a02:8109:a380:78:c903:2325:2c4a:e6c1) (Ping timeout: 268 seconds)
18:46:23 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:46:38 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:dd67:259e:7b08:293e)
18:49:33 × kenran quits (~user@user/kenran) (Remote host closed the connection)
18:54:36 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
18:54:57 × zer0bitz quits (~zer0bitz@2001:2003:f748:2000:c97d:2eea:c4af:e43e) (Read error: Connection reset by peer)
18:55:06 axeman joins (~quassel@2a02:8109:a380:78:12c5:f08a:fe34:cda6)
18:55:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:05:31 × axeman quits (~quassel@2a02:8109:a380:78:12c5:f08a:fe34:cda6) (Ping timeout: 272 seconds)
19:05:57 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
19:06:24 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:07:17 rockystone joins (~rocky@user/rockymarine)
19:20:35 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:21:10 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
19:24:24 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 264 seconds)
19:26:26 pavonia joins (~user@user/siracusa)
19:32:43 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:34:52 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
19:36:31 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
19:37:23 × vn36__ quits (~vn36@123.63.203.210) (Ping timeout: 268 seconds)
19:38:06 vn36_ joins (~vn36@123.63.203.210)
19:41:17 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
19:42:50 zeenk joins (~zeenk@2a02:2f04:a311:7000:aa5:d3dd:854f:9922)
19:43:37 × vn36_ quits (~vn36@123.63.203.210) (Ping timeout: 260 seconds)
19:43:59 causal joins (~user@50.35.83.177)
19:44:05 littlefinger joins (~littlefin@pool-74-102-98-242.nwrknj.fios.verizon.net)
19:46:17 MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
19:47:13 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
19:48:12 × littlefinger quits (~littlefin@pool-74-102-98-242.nwrknj.fios.verizon.net) (Client Quit)
19:48:16 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:48:21 axeman joins (~quassel@2a02:8109:a380:78:974a:2e45:fd2e:f5d0)
19:49:10 rockystone joins (~rocky@user/rockymarine)
19:50:17 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
19:51:29 Lumia joins (~Lumia@user/Lumia)
19:52:42 vn36_ joins (~vn36@123.63.203.210)
19:52:48 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Client Quit)
19:53:50 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
19:54:05 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
19:59:00 × Kaiepi quits (~Kaiepi@108.175.84.104) (Remote host closed the connection)
19:59:25 Kaiepi joins (~Kaiepi@108.175.84.104)
20:00:36 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds)
20:03:18 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:04:19 × Kaiepi quits (~Kaiepi@108.175.84.104) (Read error: Connection reset by peer)
20:04:33 caryhartline joins (~caryhartl@2600:1700:2d0:8d30:5cd5:afa2:55e9:2fce)
20:05:16 nate1 joins (~nate@98.45.169.16)
20:05:30 Kaiepi joins (~Kaiepi@108.175.84.104)
20:07:00 phma_ joins (phma@2001:5b0:215a:d2a8:983b:e9da:c4b4:2a59)
20:08:02 × Kaiepi quits (~Kaiepi@108.175.84.104) (Remote host closed the connection)
20:08:17 rockystone joins (~rocky@user/rockymarine)
20:08:25 Kaiepi joins (~Kaiepi@108.175.84.104)
20:09:56 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
20:10:43 × phma quits (~phma@host-67-44-208-235.hnremote.net) (Ping timeout: 248 seconds)
20:12:39 Topsi joins (~Topsi@dyndsl-095-033-094-034.ewe-ip-backbone.de)
20:12:52 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
20:14:13 yvan-sraka joins (~yvan-srak@2a01cb0802a4b90054ce5bb6fad20cec.ipv6.abo.wanadoo.fr)
20:15:10 × Lumia quits (~Lumia@user/Lumia) (Ping timeout: 272 seconds)
20:15:31 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
20:15:55 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:20:57 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
20:22:24 × MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 252 seconds)
20:24:57 rockystone joins (~rocky@user/rockymarine)
20:26:39 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
20:29:04 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
20:31:16 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:33:50 nate1 joins (~nate@98.45.169.16)
20:35:50 zeenk2 joins (~zeenk@188.25.232.159)
20:37:48 × zeenk quits (~zeenk@2a02:2f04:a311:7000:aa5:d3dd:854f:9922) (Ping timeout: 252 seconds)
20:40:35 zeenk joins (~zeenk@5.12.219.147)
20:41:22 × zeenk2 quits (~zeenk@188.25.232.159) (Ping timeout: 260 seconds)
20:44:10 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:56:03 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:56:29 Lumia joins (~Lumia@user/Lumia)
20:58:51 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving)
20:58:52 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
20:59:34 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds)
21:00:06 × mmhat quits (~mmh@p200300f1c7337736ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
21:00:34 × yvan-sraka quits (~yvan-srak@2a01cb0802a4b90054ce5bb6fad20cec.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
21:02:32 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
21:02:32 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 258 seconds)
21:02:41 × axeman quits (~quassel@2a02:8109:a380:78:974a:2e45:fd2e:f5d0) (Ping timeout: 272 seconds)
21:04:20 azimut joins (~azimut@gateway/tor-sasl/azimut)
21:05:13 chexum joins (~quassel@gateway/tor-sasl/chexum)
21:07:12 haskl joins (~haskl@user/haskl)
21:08:21 <dminuoso> How do I extend a Word16 into Word32#
21:08:30 <dminuoso> *Word16# into Word32# on older GHC verrsions
21:11:31 <davean> dminuoso: How old? There are the word16ToWord# / wordToWord16# combos.
21:11:59 <dminuoso> Not in base-4.15.0.0
21:12:02 mmhat joins (~mmh@p200300f1c73377eeee086bfffe095315.dip0.t-ipconnect.de)
21:12:09 <davean> thats ghc-prim
21:12:23 <davean> If you're working with magic hash, you often need ghc-prim
21:12:34 <davean> or primative
21:13:00 <dminuoso> Well I want the full battery
21:13:18 <davean> Huh?
21:13:36 <dminuoso> So I also want Word8# -> Word64# for instance
21:13:52 <dminuoso> (Is that safe to just unsafeCoerce#?)
21:13:53 <davean> right, so combine them
21:14:03 × chomwitt quits (~chomwitt@2a02:587:dc1e:5e00:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
21:14:06 <davean> wordToWord64# (word8ToWord# x)
21:14:23 <dminuoso> Ohh
21:14:31 <dminuoso> Okay I see.
21:18:31 × vn36_ quits (~vn36@123.63.203.210) (Ping timeout: 272 seconds)
21:20:32 danza joins (~francesco@151.57.79.164)
21:22:45 geekosaur joins (~geekosaur@xmonad/geekosaur)
21:25:44 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
21:26:59 jackhill joins (~jackhill@kalessin.dragonsnail.net)
21:30:00 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:30:09 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds)
21:31:20 mikoto-chan joins (~mikoto-ch@85-76-45-203-nat.elisa-mobile.fi)
21:32:07 × Lumia quits (~Lumia@user/Lumia) (Ping timeout: 260 seconds)
21:32:40 Lycurgus joins (~juan@user/Lycurgus)
21:34:27 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
21:36:06 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:37:06 moonsheep joins (~moonsheep@user/moonsheep)
21:38:32 × zeenk quits (~zeenk@5.12.219.147) (Ping timeout: 260 seconds)
21:40:40 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
21:42:11 <moonsheep> is there some convenience function that turns any ByteString into a Storable a?
21:42:25 <moonsheep> I could just write one but I'd like to know if it's out there already
21:42:53 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
21:43:55 × mixfix41 quits (~sdenynine@user/mixfix41) (Ping timeout: 268 seconds)
21:44:01 <dminuoso> moonsheep: You can use unsafeUseAsCString or unsafeUseAsCStringLen
21:44:16 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
21:46:45 <dminuoso> moonsheep: Just to avoid confusion, you want a polymorphic `Storable a` out of this, right?
21:47:26 <dminuoso> That, is something of type `forall a. Storable a => a`?
21:47:43 × mikoto-chan quits (~mikoto-ch@85-76-45-203-nat.elisa-mobile.fi) (Ping timeout: 255 seconds)
21:48:03 <dminuoso> davean: Okay, so I guess there's really no good way around ghc-prim then.
21:48:25 <davean> dminuoso: GHC prim is what makes magic hash run
21:48:38 <dminuoso> Well, GHC.Exts already exposes quite a few utilities
21:48:45 <dminuoso> But its missing the crucial wordToWord64# primitive
21:49:20 <dminuoso> In base-4.15.0.0 anywayu
21:49:36 mikoto-chan joins (~mikoto-ch@193.185.223.3)
21:50:53 <davean> dminuoso: Yah, GHC.Exts is about extensions, not really this sort of thing
21:52:58 <dminuoso> davean: Ugh hold on! I cant just pick ghc-prim, its linked to the installed ghc.
21:53:06 <moonsheep> dminuoso: yep, I'd like to get a storable of any type
21:53:13 <dminuoso> So ghc-prim has wordToWord64# only since 0.9
21:53:38 <dminuoso> moonsheep: You can use unsafeUseAsCStringLen + castPtr.
21:53:42 <dminuoso> moonsheep: Will that suffice?
21:53:49 <moonsheep> oh I assumed I'd have to use something like peekElemOff
21:53:51 <moonsheep> what is castPtr?
21:54:00 <dminuoso> castPtr :: Ptr a -> Ptr b
21:54:28 <dminuoso> With unsafeUseAsCStringLen you can get a Ptr to the internal buffer, and with castPtr you can just reinterpret cast the byte buffer as anything you want
21:54:45 <moonsheep> isn't that... a bit unsafe though?
21:54:52 <dminuoso> Not any less safe than what you're asking.
21:54:55 <moonsheep> also is it more efficient than using the storable interface?
21:55:02 <moonsheep> right fair enough
21:55:34 <dminuoso> moonsheep: The generic interface you want is called `Ptr` really.
21:55:50 <dminuoso> That is, a `Ptr S` for an arbitrary choice of S is a kind of `forall a. Storable a => a`
21:55:52 <moonsheep> hmm right
21:55:53 <moonsheep> thanks
21:56:10 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:56:34 <dminuoso> moonsheep: Note that you cant safely return the ptr from unsafeUseAsCStringLen, you must memcpy it out.
21:56:47 <dminuoso> (or just keep it inside the continuation without returning)
21:57:39 <moonsheep> wait does that mean I can't castPtr it?
21:57:43 <moonsheep> do I have to memcpy it?
21:58:20 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
21:59:34 <dminuoso> moonsheep: No, but Im entirely unsure how safe you will be if you do something like: `ptr <- unsafeUseAsCStringLen (\(ptr, len) -> pure ptr)`
21:59:40 <dminuoso> Because this will break referential transparency entirely
22:00:05 <dminuoso> (Well in fact any modification to that ptr will break referential transparency, even inside the continuation.
22:00:13 <moonsheep> ah well I don't mean to do that
22:00:15 <dminuoso> So if you want to modify it, memcpy it first into a fresh buffer
22:00:28 <dminuoso> But if you just want to reinterpret and read from it, its all good.
22:00:41 <dminuoso> Even if you extract the ptr from the continuation
22:01:33 <moonsheep> right
22:02:05 <moonsheep> since everything is immutable in haskell, the second I return an polymorphic type from the function it's basically read-only right?
22:02:22 <dminuoso> No?
22:02:31 × Feuermagier quits (~Feuermagi@user/feuermagier) (Quit: Leaving)
22:02:38 <dminuoso> Im a bit unsure what makes you think there's any relationship between polymorphic types and read-only.
22:03:06 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
22:03:18 <geekosaur> ByteString assumes it's safe to modify stuff directly because it knows when there's only one reference to it. you're in a position to break that
22:03:22 <geekosaur> (iirc)
22:03:42 <moonsheep> dminuoso: well it doesn't really matter that it's polymorphic
22:03:49 <geekosaur> just casting to something else does not change this
22:03:49 <moonsheep> any value in haskell is immutable right?
22:03:55 <dminuoso> moonsheep: sort of..
22:04:34 <dminuoso> moonsheep: Thats precisely what Im getting at. unsafeUseAsCStringLen lets you violate that mutability and break referential transparency in strange ways. That's why there's an `unsafe` tagged to its name.
22:04:59 <dminuoso> But in the absence of unsafe primitives *values* themselves are immutable
22:05:07 <moonsheep> right, but if I don't mutate it within the function, then it's fine, no?
22:05:21 <moonsheep> and since I don't plan to mutate it I should be fine, is that correct?
22:05:24 <dminuoso> Well, and as long as you dont do any memory access errors. :)
22:05:26 <dminuoso> But yeah
22:05:33 <dminuoso> So if you do something like:
22:05:35 <moonsheep> right, all I wanted to hear :)
22:06:06 <geekosaur> doesn't ghc optimize to a mutation when it knows there's only one copy, which this would break?
22:06:17 <dminuoso> unsafeUseAsCStringLen (\(ptr, len) -> peek ((castPtr ptr) :: Ptr Double))
22:06:29 <moonsheep> oh thanks
22:06:31 <dminuoso> This is in principle fine (as long as you dont do out-of-bound reads for example
22:06:44 <dminuoso> geekosaur: Clean does that.
22:07:20 × Topsi quits (~Topsi@dyndsl-095-033-094-034.ewe-ip-backbone.de) (Read error: Connection reset by peer)
22:08:00 × mikoto-chan quits (~mikoto-ch@193.185.223.3) (Ping timeout: 252 seconds)
22:08:03 <dminuoso> Never heard of GHC doing similar mutation-instead-of-copy
22:08:23 <geekosaur> thought that was list fusion
22:08:38 <geekosaur> not just not creating a new list but also not creating new list items
22:08:46 <dminuoso> Do you mean the build/foldr RULE?
22:08:46 <geekosaur> just mutating in place
22:09:02 <geekosaur> one's the rule, the other's the runtime iirc
22:09:16 <dminuoso> Cool, first time Im hearding of this
22:09:19 <dminuoso> *hearing
22:09:32 <dminuoso> Sorry, my chair position is slightly off, which causes me to mispress keys constantly
22:09:36 moonsheep parts (~moonsheep@user/moonsheep) ()
22:09:56 <geekosaur> since the runtime can tell there's only one reference it can mutate it. otherwise you'd still be creating new values even if you're not adding them to new lists. at least that's my understanding
22:10:25 <geekosaur> there are limits to it but it exists, as I understand it
22:10:34 <dminuoso> If you find details, let me know
22:10:41 <dminuoso> Im very curious
22:10:53 <geekosaur> I think Clean has fewer limits because it can do a better job of recognizing when only one reference to a value exists
22:13:31 <geekosaur> mm, I'm poking around and it certainly seems to be false in the general case 😞
22:13:32 × caryhartline quits (~caryhartl@2600:1700:2d0:8d30:5cd5:afa2:55e9:2fce) (Quit: caryhartline)
22:14:06 zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
22:16:03 <geekosaur> okay, apparently it's not ghc itself but list/stream fusion
22:16:13 <geekosaur> so it would be related to build/foldr
22:16:32 × michalz quits (~michalz@185.246.207.200) (Remote host closed the connection)
22:18:46 <dminuoso> davean: By the way, Im beginning to understand that what Im asking simply does not exist. :(
22:22:27 <dminuoso> And there's some really disturbing things in ghc-prim
22:29:35 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:31:53 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:34:06 <davean> dminuoso: well, the idea of actually sized prims is recent
22:34:52 <davean> Curious what disturbes you
22:35:41 <dminuoso> Is there no way to stuff a Word64# into a Word#? Or can I just unsafeCoerce# this?
22:36:08 <EvanR> squint, what if Word# is too small
22:36:27 <hpc> what if Word# is too large, even
22:37:05 <EvanR> you don't want it jumbling around when I'm driving
22:37:19 <hpc> is there a way to limit something to building on 64-bit only?
22:37:26 <davean> dminuoso: In earlier version before there was sizing, you want extendWord16#
22:37:28 <davean> etc
22:37:30 <dminuoso> EvanR: Would you even have a Word64 type on a 32-bit machine?
22:37:41 <davean> (and narrowWord16#)
22:37:44 <EvanR> interesting point
22:37:46 <davean> but we changed to new stuff
22:37:55 <dminuoso> davean: Yeah, but these didnt exist for Word64#
22:37:59 <davean> dminuoso: yes, you would have a Word64 type on a 32 bit machine
22:38:20 <dminuoso> davean: Thats hard to believe, because all the sized types were just wrappers on native words.
22:38:25 <dminuoso> This just got changed in 9.2
22:38:27 <EvanR> er I took that to mean Word64#
22:41:31 <dminuoso> davean: either way, there's just no primops for extending or narrowing from/into 64 bit types in base-4.15.0.0 or earlier.
22:41:36 <dminuoso> I feel like I must be missing something
22:41:58 <dminuoso> Should check what a fromIntegral from Word to Word64 really does
22:45:50 <dminuoso> do_word = \ (x_a1z8 :: Word) -> case x_a1z8 of { W# x#_a1za -> GHC.Word.W64# x#_a1za }
22:46:08 <dminuoso> That suspicously looks unsafeCoerce#able
22:46:29 <dminuoso> What would this do on a 32 bit system though?
22:46:49 <EvanR> I ask everyone on the plane if anyone has a 32 bit computer
22:47:57 <dminuoso> Also curious, why is there no type annotation for x#_a1za?
22:48:04 <dminuoso> Isnt everything explicitly typed in core?
22:48:58 <EvanR> would a type sig be redundant because W# is monomorphic constructor
22:49:42 <dminuoso> I wonder whether perhaps theres some excemption about primitive types
22:51:47 <dminuoso> https://gitlab.haskell.org/ghc/ghc/-/issues/17377
22:53:47 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
22:57:53 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
22:57:55 × thegeekinside quits (~thegeekin@189.180.97.156) (Ping timeout: 268 seconds)
22:58:43 <dminuoso> Ive been helped in another place.
22:59:32 <dminuoso> So on 64 bit systems you can just unsafeCoerce#, and for 32 bit systems there's GHC.IntWord64 which provides an FFI call wordToWord64#
22:59:50 axeman joins (~quassel@2a02:8109:a380:78:5151:14f6:9d87:4a52)
23:03:44 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
23:06:20 jonathanx__ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
23:06:47 × jonathanx_ quits (~jonathan@178.174.176.109) (Read error: Connection reset by peer)
23:09:05 rockystone joins (~rocky@user/rockymarine)
23:09:57 × vglfr quits (~vglfr@145.224.100.100) (Ping timeout: 252 seconds)
23:13:03 × Tuplanolla quits (~Tuplanoll@91-159-69-245.elisa-laajakaista.fi) (Quit: Leaving.)
23:13:42 talismanick joins (~talismani@96.71.204.25)
23:14:12 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:26:20 × talismanick quits (~talismani@96.71.204.25) (Remote host closed the connection)
23:26:41 talismanick joins (~talismani@96.71.204.25)
23:30:44 nate1 joins (~nate@98.45.169.16)
23:35:12 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
23:39:37 <EvanR> is there a lightweight functional pearl for conjuring a supply of unique names in an algorithm
23:40:50 <EvanR> in one paper there's this whole thing with an impure generator going on but really
23:40:54 × acidjnk_new quits (~acidjnk@p200300d6e7137a877551a7e8fd85f50e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
23:43:51 × mmhat quits (~mmh@p200300f1c73377eeee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7)
23:44:11 × axeman quits (~quassel@2a02:8109:a380:78:5151:14f6:9d87:4a52) (Ping timeout: 272 seconds)
23:45:10 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
23:45:39 × zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
23:51:09 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
23:52:23 <geekosaur> what else were you expecting? if they need to be unique then you need to keep a seed somewhere
23:53:02 <dminuoso> EvanR: A functional pearl? Like `s -> (s, t)`?
23:54:31 <geekosaur> well, yes, there is State, but if if that were enough I'd assume EvanR wouldn't be asking
23:54:37 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
23:55:01 <dminuoso> Im not entirely sure what they are asking for, then.
23:55:14 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
23:57:22 <jackdk> I would probably newtype over state in a way that doesn't expose the standard operations and only allows a "next gensym".
23:57:45 rockystone joins (~rocky@user/rockymarine)
23:58:43 <EvanR> yes "gensym" is part of the lore on doing this without State monads
23:59:22 <EvanR> why would you want to not use State monads? I guess at that time in history no one had heard of a State monad. Today, it's just a pain in the ass to shoe horn into pure code
23:59:46 <dminuoso> the idea of a state monad is as old as lambda calculus.
23:59:59 <dminuoso> you just didnt call it monad back then.

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