Home liberachat/#haskell: Logs Calendar

Logs on 2023-02-21 (liberachat/#haskell)

00:01:08 × jwiegley quits (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
00:01:08 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
00:09:58 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:14:49 × GuestW48 quits (~GuestW48@46.146.247.46) (Quit: Client closed)
00:15:21 × slack1256 quits (~slack1256@186.11.53.84) (Ping timeout: 255 seconds)
00:17:13 mauke_ joins (~mauke@user/mauke)
00:18:30 × mauke quits (~mauke@user/mauke) (Ping timeout: 255 seconds)
00:18:31 mauke_ is now known as mauke
00:19:42 × elevenkb quits (~elevenkb@105.226.22.146) (Quit: Client closed)
00:21:34 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
00:22:24 sympt joins (~sympt@user/sympt)
00:23:09 × mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 268 seconds)
00:28:07 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
00:33:20 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
00:33:57 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:36:20 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:36:20 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:36:20 wroathe joins (~wroathe@user/wroathe)
00:38:18 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
00:39:14 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:39:14 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:39:14 wroathe joins (~wroathe@user/wroathe)
00:45:15 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
00:45:59 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:46:20 Square2 joins (~Square4@user/square)
00:47:31 × tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Quit: leaving)
00:50:28 king_gs joins (~Thunderbi@187.201.41.239)
00:51:54 prasadi01Newuser joins (~Thunderbi@c-73-22-232-123.hsd1.il.comcast.net)
00:53:26 nabaiste^ joins (~nabaiste@c-24-30-76-89.hsd1.ga.comcast.net)
00:53:52 × acidjnk quits (~acidjnk@p200300d6e715c4362c639e785d9ee9c9.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
00:57:30 tessier joins (~treed@ip72-197-145-89.sd.sd.cox.net)
01:00:38 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
01:02:30 × prasadi01Newuser quits (~Thunderbi@c-73-22-232-123.hsd1.il.comcast.net) (Ping timeout: 246 seconds)
01:03:09 Everything joins (~Everythin@46.185.124.65)
01:04:52 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:05:29 prasadi01Newuser joins (~Thunderbi@c-73-22-232-123.hsd1.il.comcast.net)
01:09:52 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
01:09:56 king_gs1 joins (~Thunderbi@2806:103e:29:1779:2613:110c:f586:495b)
01:10:01 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
01:10:26 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
01:10:27 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:13 king_gs1 is now known as king_gs
01:12:50 × jinsl quits (~jinsl@2408:8207:2557:8800:211:32ff:fec8:6aea) (Ping timeout: 255 seconds)
01:12:54 jinsl- joins (~jinsl@2408:8207:2558:e50:211:32ff:fec8:6aea)
01:13:42 × prasadi01Newuser quits (~Thunderbi@c-73-22-232-123.hsd1.il.comcast.net) (Ping timeout: 246 seconds)
01:15:07 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 246 seconds)
01:15:39 × dcoutts_ quits (~duncan@host86-167-90-212.range86-167.btcentralplus.com) (Ping timeout: 255 seconds)
01:16:35 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:21:32 oxide joins (~lambda@user/oxide)
01:21:50 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 255 seconds)
01:22:25 sammelweis joins (~quassel@c-68-48-18-140.hsd1.mi.comcast.net)
01:26:29 Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::160)
01:26:54 × xff0x quits (~xff0x@ai081074.d.east.v6connect.net) (Ping timeout: 252 seconds)
01:28:19 × khumba quits (~khumba@user/khumba) ()
01:30:03 × Square2 quits (~Square4@user/square) (Ping timeout: 255 seconds)
01:32:06 × Kuttenbrunzer quits (~Kuttenbru@2a02:8108:8b80:1d48::160) (Remote host closed the connection)
01:35:47 elbear joins (~lucian@188.25.92.21)
01:40:15 × elbear quits (~lucian@188.25.92.21) (Ping timeout: 260 seconds)
01:42:31 gpncarl joins (~gpncarl@222.249.231.4)
01:44:52 × gpncarl_ quits (~gpncarl@222.249.231.4) (Ping timeout: 246 seconds)
01:44:54 × oxide quits (~lambda@user/oxide) (Ping timeout: 255 seconds)
01:49:12 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:50:12 daylily[m] joins (~daylilies@2001:470:69fc:105::3:1d06)
01:55:46 robobub joins (uid248673@id-248673.uxbridge.irccloud.com)
02:01:35 × sammelweis quits (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Quit: No Ping reply in 180 seconds.)
02:03:40 × mikess_ quits (~sam@user/mikess) (Quit: Reconnecting)
02:03:54 mikess joins (~sam@user/mikess)
02:09:14 gmg joins (~user@user/gehmehgeh)
02:09:53 × daylily[m] quits (~daylilies@2001:470:69fc:105::3:1d06) (Quit: Reconnecting)
02:09:57 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
02:10:08 daylily[m] joins (~daylilies@2001:470:69fc:105::3:1d06)
02:10:59 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
02:11:20 × mikess quits (~sam@user/mikess) (Quit: leaving)
02:11:21 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:11:51 × masterbuilder quits (~master@user/masterbuilder) (Quit: leaving)
02:12:21 × cassaundra quits (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) (Ping timeout: 255 seconds)
02:14:19 cassaundra joins (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net)
02:27:51 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
02:28:28 falafel joins (~falafel@2607:fb91:143f:e47f:e6ea:7941:8274:fc1b)
02:29:23 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
02:29:59 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
02:34:57 mikess joins (~sam@user/mikess)
02:35:00 × king_gs quits (~Thunderbi@2806:103e:29:1779:2613:110c:f586:495b) (Quit: king_gs)
02:35:32 × mikess quits (~sam@user/mikess) (Client Quit)
02:36:02 mikess joins (~sam@user/mikess)
02:40:00 × telser quits (~quassel@user/telser) (Ping timeout: 248 seconds)
02:40:43 telser joins (~quassel@user/telser)
02:53:08 freeside joins (~mengwong@103.252.202.170)
02:56:15 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
02:57:18 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
02:59:00 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
03:01:24 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:9bb4:3da:515:fe96) (Remote host closed the connection)
03:02:35 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit)
03:03:09 razetime joins (~Thunderbi@43.254.111.18)
03:08:03 × mikess quits (~sam@user/mikess) (Quit: leaving)
03:08:45 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
03:13:32 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
03:14:46 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
03:15:23 jpds joins (~jpds@gateway/tor-sasl/jpds)
03:15:27 stiell joins (~stiell@gateway/tor-sasl/stiell)
03:15:52 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
03:17:35 × califax quits (~califax@user/califx) (Ping timeout: 255 seconds)
03:17:53 califax_ joins (~califax@user/califx)
03:18:56 califax_ is now known as califax
03:24:09 Guest7 joins (~Guest7@138-51-70-192-lsn-2.nat.utoronto.ca)
03:26:01 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
03:26:20 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
03:27:29 × Guest7 quits (~Guest7@138-51-70-192-lsn-2.nat.utoronto.ca) (Client Quit)
03:29:27 mikoto-chan joins (~mikoto-ch@2001:999:70d:3f0d:268a:86d8:cb4d:8855)
03:29:34 freeside joins (~mengwong@103.252.202.170)
03:32:05 × razetime quits (~Thunderbi@43.254.111.18) (Read error: Connection reset by peer)
03:34:41 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
03:37:19 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
03:38:10 razetime joins (~Thunderbi@43.254.111.18)
03:40:08 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:42:42 gmg joins (~user@user/gehmehgeh)
03:42:46 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
03:44:53 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
03:47:12 × td_ quits (~td@i5387093A.versanet.de) (Ping timeout: 248 seconds)
03:47:26 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
03:48:07 <segfaultfizzbuzz> is there an unscientific guide as to at what point i might generally expect problems with summation when using f16, f32, and f64, in regards to N, the number of items i am summing?
03:48:27 <segfaultfizzbuzz> that is to say "once N is bigger than X, you should start to worry about your summation being accurate", what is X?
03:48:38 <segfaultfizzbuzz> for each of f16, f32, f64
03:49:18 td_ joins (~td@i5387093F.versanet.de)
03:51:16 <Axman6> you could just use my foldl-statistics package, which implements kahan summation (IIRC, pretty sure that's what it's called)
03:51:35 <segfaultfizzbuzz> thanks, right, but my question is, as a rule of thumb, when will i need it
03:51:48 <segfaultfizzbuzz> is it at 10,000 items, at a million, at a trillion items?
03:53:18 <Axman6> you could probably read the paper(s) by kahan et al. to find out
03:53:51 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
03:54:50 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:54:50 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:54:50 finn_elija is now known as FinnElija
03:55:49 <Axman6> there's probably several factors to consider, including the range of values, if you're dding numbers in the range of 10^10 and 10^-10, you're probably going to lose precision
03:56:09 <segfaultfizzbuzz> yes i know the distribution and magnitude of the numbers is significant
03:56:25 <segfaultfizzbuzz> which is why i introduced this as an unscientific question
03:56:25 <Axman6> I wonder if adding things using Scientific would be guaranteed to mintain full precision
03:58:11 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
04:00:00 × telser quits (~quassel@user/telser) (Ping timeout: 248 seconds)
04:00:22 telser joins (~quassel@user/telser)
04:08:22 × tessier quits (~treed@ip72-197-145-89.sd.sd.cox.net) (Ping timeout: 246 seconds)
04:10:36 tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com)
04:12:57 × cassaundra quits (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) (Ping timeout: 255 seconds)
04:13:53 cassaundra joins (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net)
04:20:56 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
04:21:03 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
04:27:08 × razetime quits (~Thunderbi@43.254.111.18) (Remote host closed the connection)
04:29:08 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
04:32:11 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds)
04:32:47 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
04:35:01 × stackdroid18 quits (14094@de1.hashbang.sh) (Quit: hasta la vista... tchau!)
04:37:45 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
04:38:07 × thegeekinside quits (~thegeekin@189.180.66.126) (Ping timeout: 246 seconds)
04:39:47 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
04:40:55 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 246 seconds)
04:41:13 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
04:41:44 jwiegley joins (~jwiegley@2600:1700:cf00:db0:a854:9d9d:a060:90b3)
04:41:46 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
04:43:11 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
04:43:25 thegeekinside joins (~thegeekin@189.180.66.126)
04:44:55 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 252 seconds)
04:45:18 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
04:45:49 × mikoto-chan quits (~mikoto-ch@2001:999:70d:3f0d:268a:86d8:cb4d:8855) (Ping timeout: 246 seconds)
04:47:04 × Everything quits (~Everythin@46.185.124.65) (Quit: leaving)
04:47:39 Sgeo joins (~Sgeo@user/sgeo)
04:54:23 elbear joins (~lucian@188.25.92.21)
04:58:51 × elbear quits (~lucian@188.25.92.21) (Ping timeout: 255 seconds)
04:58:52 × Vajb quits (~Vajb@2001:999:484:9db9:7ff5:c370:5511:7e1c) (Read error: Connection reset by peer)
04:59:59 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
05:00:10 × polyphem quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 252 seconds)
05:02:00 × abhixec quits (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
05:03:07 razetime joins (~Thunderbi@43.254.111.18)
05:05:05 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds)
05:06:36 gpncarl_ joins (~gpncarl@222.249.231.4)
05:06:47 × p0lyph3m quits (~polyphem@2a02:810d:840:8754:4d31:9178:35f:6608) (Ping timeout: 264 seconds)
05:07:21 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
05:08:40 × gpncarl quits (~gpncarl@222.249.231.4) (Ping timeout: 268 seconds)
05:08:51 abhixec joins (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
05:09:10 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
05:09:53 Vajb joins (~Vajb@2001:999:484:9db9:7ff5:c370:5511:7e1c)
05:10:12 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
05:14:37 elbear joins (~lucian@188.25.92.21)
05:19:06 × elbear quits (~lucian@188.25.92.21) (Ping timeout: 255 seconds)
05:24:36 gpncarl joins (~gpncarl@210.12.195.2)
05:25:00 × gpncarl_ quits (~gpncarl@222.249.231.4) (Ping timeout: 246 seconds)
05:30:56 × zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving)
05:31:45 <Inst> what's the official stance on operator overloading too much?
05:33:21 zmt00 joins (~zmt00@user/zmt00)
05:36:36 <Inst> as in, i've defined Rock >= Paper = False
05:36:42 <c_wraith> operators are names. They can be good or bad. *overloading* in particular is sketchy, just like overloading names is.
05:36:58 <Inst> and custom Show instances
05:37:00 <c_wraith> yeah, that's sketchy. Ord is assumed to define a total order
05:37:05 <Inst> okay, thanks
05:37:07 <Inst> not good practice
05:37:37 <c_wraith> Show is less constrained, though. Some people think it should always generate valid Haskell code, but really it's just for debugging anyway.
05:37:59 <c_wraith> also, sometimes derived Show instances are terrible
05:38:47 <Inst> it shouldn't be used in production code iirc, because String is cancer
05:38:52 <Inst> showt or something like that
05:39:11 talismanick joins (~talismani@45.23.184.231)
05:39:14 <c_wraith> String is fine unless you're handing binary data or megabytes of data
05:40:00 <c_wraith> (though there are cases like Filepath where String is *semantically* wrong, and those ones are sketchy)
05:40:14 × razetime quits (~Thunderbi@43.254.111.18) (Quit: See You Space Cowboy)
05:41:10 elbear joins (~lucian@188.25.92.21)
05:44:41 × nabaiste^ quits (~nabaiste@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection)
05:45:21 <Inst> new sanctioned prelude when?
05:45:23 <sm> String is cancer is hyperbole
05:48:06 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
05:48:11 gpncarl_ joins (~gpncarl@222.249.231.4)
05:48:15 × gpncarl quits (~gpncarl@210.12.195.2) (Ping timeout: 248 seconds)
05:51:04 <Inst> list vs array basically comes down to lists are terrible at random access, right?
05:51:13 <Inst> but have O(1) append to front
05:53:02 <sm> That sounds right. Lists can change size easily and are handy for lazy algorithms. On a practical level they are also much easier because built in.
05:53:17 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
05:54:10 <sm> and of course "terrible" depends on scale
05:54:17 <c_wraith> It's also worth pointing out that algorithms that work on *text* basically can't use random access once you work with the entirety of unicode
05:54:38 <c_wraith> Like, unicode is just too complex to treat that way
05:55:08 <Inst> tbh i'm sort of wondering as to whether "lazy in the spine, strict in the leaves" is even good practice, i'm starting to appreciate how fully lazy lists can be useful
05:56:10 GuestW48 joins (~GuestW48@46.146.247.46)
05:56:38 × JimL quits (~quassel@89-162-26-217.fiber.signal.no) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
05:57:15 <Inst> the thunks are a series of function evaluations, right?
05:57:35 <Inst> *applications, right?
05:57:50 <Inst> if I have a datatype that's a long chain of function applications, it might be best not to fully evaluate via any strictness
05:58:14 <sm> yes, sometimes laziness is what you want
05:58:49 <Inst> so i can random access the thunk i want and only evaluate that one, instead of having to evaluate everything else along the way
05:59:16 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
06:02:17 jakalx joins (~jakalx@base.jakalx.net)
06:06:35 gastus joins (~gastus@5.83.191.28)
06:06:54 <gastus> How to have a query('select') return rows with names which can be typed ?
06:07:02 <gastus> something like uery() as {name: string} in TypeScript ?
06:10:55 × falafel quits (~falafel@2607:fb91:143f:e47f:e6ea:7941:8274:fc1b) (Ping timeout: 260 seconds)
06:11:39 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:24:10 × elbear quits (~lucian@188.25.92.21) (Ping timeout: 246 seconds)
06:25:37 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
06:27:30 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
06:38:37 × Inst quits (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Read error: Connection reset by peer)
06:42:29 delYsid joins (~user@user/delYsid)
06:43:43 × codaraxis quits (~codaraxis@user/codaraxis) (Quit: Leaving)
06:44:12 trev joins (~trev@user/trev)
06:47:59 michalz joins (~michalz@185.246.207.215)
06:48:19 × lagash_ quits (~lagash@lagash.shelltalk.net) (Ping timeout: 246 seconds)
06:49:04 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds)
06:52:03 MelMalik is now known as Ellenor
06:52:52 × analoq quits (~yashi@user/dies) (Ping timeout: 246 seconds)
06:54:44 analoq joins (~yashi@user/dies)
06:55:37 lagash_ joins (~lagash@lagash.shelltalk.net)
06:59:01 elbear joins (~lucian@188.25.92.21)
07:02:03 motherfsck joins (~motherfsc@user/motherfsck)
07:02:31 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
07:08:55 mastarija joins (~mastarija@188.252.197.148)
07:12:05 kenran joins (~user@user/kenran)
07:12:30 × czy quits (~user@host-140-23.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Ping timeout: 255 seconds)
07:12:33 × kenran quits (~user@user/kenran) (Remote host closed the connection)
07:12:37 mei joins (~mei@user/mei)
07:14:07 × elbear quits (~lucian@188.25.92.21) (Ping timeout: 248 seconds)
07:19:35 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 255 seconds)
07:20:12 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:23:43 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:29:42 × lottaquestions_ quits (~nick@2607:fa49:503e:7100:ab:1d1a:a3a6:1b51) (Remote host closed the connection)
07:30:07 lottaquestions_ joins (~nick@2607:fa49:503e:7100:376d:3f27:951:60f7)
07:32:45 × thegeekinside quits (~thegeekin@189.180.66.126) (Ping timeout: 255 seconds)
07:38:11 motherfsck joins (~motherfsc@user/motherfsck)
07:50:00 elbear joins (~lucian@109.101.137.234)
07:55:55 mncheckm joins (~mncheck@193.224.205.254)
07:57:15 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
07:58:38 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
07:59:03 mikoto-chan joins (~mikoto-ch@2001:999:70d:3f0d:268a:86d8:cb4d:8855)
08:02:47 lortabac joins (~lortabac@2a01:e0a:541:b8f0:1c4d:fe05:e8b3:ebb4)
08:07:23 × fryguybob quits (~fryguybob@cpe-24-94-51-210.stny.res.rr.com) (Ping timeout: 246 seconds)
08:08:00 × aweinstock quits (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Ping timeout: 248 seconds)
08:09:06 mjrosenb joins (~mjrosenb@pool-96-232-177-77.nycmny.fios.verizon.net)
08:09:29 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:11:17 <mjrosenb> I'm getting `Map.!: given key is not an element in the map` with a single entry in the call stack. I kind of suspect this is coming from lens, not any use of ! that I have directly
08:11:32 <mjrosenb> a) Is there anything I can do to get an actual call stack?
08:12:02 <mjrosenb> b) what in lens is likely to produce this error? at and ix both don't use (!) from what I can tell.
08:14:52 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
08:16:21 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
08:17:03 <sm> mjrosenb: you can build with profiling enabled and then run with +RTS -xc to get a call stack (actually many call stacks, yours among them)
08:18:04 <sm> searching the web might tell more
08:18:43 <mjrosenb> sm: caveat: this isn't using ghc, it is using ghcjs. Is there a way of doing things like -xc with ghcjs?
08:19:03 <sm> though the internet tells me that message comes from elm..
08:19:05 <sm> don't know, sorry
08:20:10 <sm> a dumb way to debug is walk an error call through your code line by line until you find where it fails
08:20:50 × ell quits (~ellie@user/ellie) (Quit: ill be backkk)
08:23:05 <mjrosenb> yeah, I tried that, there is a bit too much code and a bit too much state to make that easy.
08:24:24 <mjrosenb> blech.
08:24:25 <mjrosenb> ghcjs: unrecognised flag: --enable-profiling
08:25:06 <sm> enabling/doing profiling is extremely hard I find, except with stack build --profile
08:25:33 <sm> for ghc[js] it might be -prof
08:25:39 <sm> ...and something else..
08:25:45 × mauke quits (~mauke@user/mauke) (Quit: bbl)
08:27:19 <mjrosenb> ahh, indeed. that is working better
08:27:34 mjrosenb wonders where the `--enable-profiling` misinformation came from
08:30:12 <sm> that's a cabal build flag
08:30:25 <sm> every tool does it differently :)
08:34:14 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:34:24 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
08:34:34 nschoe joins (~q@141.101.51.197)
08:35:01 <mjrosenb> whooo!
08:35:06 <mjrosenb> CallStack (from -prof): Match.Builder.CAF (<entire-module>) rts.js:6048:15
08:35:18 <mjrosenb> I have... a module
08:35:39 <mjrosenb> which eliminates 95% of the places that I need to look!
08:36:38 × Hammdist quits (~Hammdist@67.169.114.135) (Ping timeout: 260 seconds)
08:37:00 × elbear quits (~lucian@109.101.137.234) (Ping timeout: 252 seconds)
08:37:56 MajorBiscuit joins (~MajorBisc@c-001-020-009.client.tudelft.eduvpn.nl)
08:37:59 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 264 seconds)
08:39:27 fryguybob joins (~fryguybob@cpe-24-94-51-210.stny.res.rr.com)
08:39:30 acidjnk joins (~acidjnk@p200300d6e715c433acad43775727ee93.dip0.t-ipconnect.de)
08:41:09 aweinstock joins (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com)
08:41:24 cfricke joins (~cfricke@user/cfricke)
08:41:41 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
08:42:02 zeenk joins (~zeenk@2a02:2f04:a214:1e00::7fe)
08:43:55 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
08:45:59 elbear joins (~lucian@109.101.137.234)
08:46:49 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
08:55:05 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:57:07 ell joins (~ellie@user/ellie)
08:57:32 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
08:57:37 rlj joins (~rlj@c-5eea7342-74736162.cust.telenor.se)
08:58:06 × ell quits (~ellie@user/ellie) (Remote host closed the connection)
08:58:42 × elbear quits (~lucian@109.101.137.234) (Ping timeout: 255 seconds)
08:58:59 discuss9128 joins (~discuss91@137.132.215.133)
08:59:57 elbear joins (~lucian@109.101.137.234)
09:00:32 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Remote host closed the connection)
09:04:22 × SoF quits (~skius@user/skius) (Quit: Ping timeout (120 seconds))
09:04:52 SoF joins (~skius@user/skius)
09:04:55 ell joins (~ellie@user/ellie)
09:06:39 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
09:13:54 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
09:16:00 × elbear quits (~lucian@109.101.137.234) (Quit: leaving)
09:20:38 × stilgart quits (~Christoph@chezlefab.net) (Ping timeout: 255 seconds)
09:21:20 stilgart joins (~Christoph@chezlefab.net)
09:23:12 × GuestW48 quits (~GuestW48@46.146.247.46) (Quit: Client closed)
09:25:01 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:26:03 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 240 seconds)
09:26:50 freeside joins (~mengwong@122.11.248.245)
09:27:07 × mikoto-chan quits (~mikoto-ch@2001:999:70d:3f0d:268a:86d8:cb4d:8855) (Ping timeout: 248 seconds)
09:36:54 mikoto-chan joins (~mikoto-ch@2001:999:70d:3f0d:268a:86d8:cb4d:8855)
09:41:12 mauke joins (~mauke@user/mauke)
09:42:54 × discuss9128 quits (~discuss91@137.132.215.133) (Quit: Client closed)
09:44:41 kuribas joins (~user@ptr-17d51eohw70nwasehcd.18120a2.ip6.access.telenet.be)
09:45:50 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:47:55 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 260 seconds)
09:51:10 _xor joins (~xor@72.49.195.228)
09:55:34 × ft quits (~ft@p3e9bc443.dip0.t-ipconnect.de) (Quit: leaving)
09:58:56 mmhat joins (~mmh@2003:f1:c71c:17cb:ee08:6bff:fe09:5315)
10:01:00 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf)
10:02:36 random-jellyfish joins (~random-je@user/random-jellyfish)
10:02:51 × acidjnk quits (~acidjnk@p200300d6e715c433acad43775727ee93.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
10:03:55 × gpncarl_ quits (~gpncarl@222.249.231.4) (Ping timeout: 252 seconds)
10:05:19 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Ping timeout: 248 seconds)
10:06:35 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 248 seconds)
10:07:59 × freeside quits (~mengwong@122.11.248.245) (Ping timeout: 264 seconds)
10:08:20 freeside joins (~mengwong@122.11.248.245)
10:08:43 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
10:08:50 acidjnk joins (~acidjnk@p200300d6e715c433acad43775727ee93.dip0.t-ipconnect.de)
10:13:31 × freeside quits (~mengwong@122.11.248.245) (Ping timeout: 248 seconds)
10:15:31 × jespada quits (~jespada@77.98.179.16) (Remote host closed the connection)
10:16:19 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
10:17:13 gpncarl_ joins (~gpncarl@222.249.231.4)
10:17:52 Axman6 joins (~Axman6@user/axman6)
10:18:44 dcoutts_ joins (~duncan@host86-153-135-38.range86-153.btcentralplus.com)
10:20:50 <sm> mjrosenb: nice
10:21:11 × dcoutts quits (~duncan@host86-167-90-212.range86-167.btcentralplus.com) (Ping timeout: 264 seconds)
10:21:32 <sm> it sounds like a large minified js, unfortunately. Any luck ?
10:25:13 × ph88 quits (~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
10:26:49 <cheater> can someone tell me why "2" and "running clients" never gets printed? http://sprunge.us/8tgb1e
10:27:12 <cheater> i used to know why but i forgot :p
10:27:13 <merijn> cheater: That pastebin immediately disconnects me?
10:27:21 <cheater> ???
10:27:28 Square2 joins (~Square4@user/square)
10:27:42 <merijn> This site can’t be reachedsprunge.us unexpectedly closed the connection.
10:27:55 <cheater> https://paste.tomsmeding.com/MQePIeIx
10:28:42 <merijn> cheater: race kills the slowest action, afaik?
10:29:01 <merijn> So as soon as runServer finishes, the second argument (do block) gets killed
10:29:02 <cheater> hmm
10:29:16 <cheater> right
10:29:35 <cheater> what's the best way to run two threads again so they both finish?
10:29:54 <cheater> no wait i guess i don't want that
10:29:55 <Hecate> https://play-haskell.tomsmeding.com/saved/lGo1Z5va
10:29:58 <Hecate> cheater: ^
10:30:51 <cheater> Hecate: did you change nothing?
10:31:34 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:32:32 <cheater> Hecate: why link me to that?
10:32:35 <cheater> i'm confused
10:33:23 <Hecate> cheater: you can provide people with a playground of your code so that we can experiment with it from the browser :)
10:33:31 <Hecate> or see the Core generated by your code ;)
10:41:23 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:41:31 teo joins (~teo@user/teo)
10:41:46 <[Leary]> tomsmeding: The playground doesn't handle `forever` very well. It would be good if it printed output produced prior to the time-out.
10:44:15 × mmhat quits (~mmh@2003:f1:c71c:17cb:ee08:6bff:fe09:5315) (Ping timeout: 252 seconds)
10:44:37 mmhat joins (~mmh@p200300f1c71c1721ee086bfffe095315.dip0.t-ipconnect.de)
10:45:16 × pja quits (~pja@2a02:8010:6098:0:e65f:1ff:fe1f:660f) (Quit: WeeChat 3.7.1)
10:45:20 abcdw parts (8c3442b76e@user/abcdw) ()
10:46:08 × APic quits (apic@apic.name) (Ping timeout: 255 seconds)
10:47:12 ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:2da3:d0c8:ac16:be0)
10:47:56 CiaoSen joins (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:53:03 × talismanick quits (~talismani@45.23.184.231) (Ping timeout: 252 seconds)
10:53:21 × mikoto-chan quits (~mikoto-ch@2001:999:70d:3f0d:268a:86d8:cb4d:8855) (Quit: WeeChat 3.6)
11:01:06 xff0x joins (~xff0x@ai081074.d.east.v6connect.net)
11:07:03 Square2 is now known as Square
11:10:28 × gpncarl_ quits (~gpncarl@222.249.231.4) (Ping timeout: 246 seconds)
11:18:31 akegalj joins (~akegalj@93.138.138.10)
11:21:45 shapr joins (~user@net-5-88-239-92.cust.vodafonedsl.it)
11:21:58 Guest80 joins (~Guest@2409:4073:210:5665:5582:5742:1289:a32d)
11:22:17 gpncarl_ joins (~gpncarl@222.249.231.4)
11:32:13 × Guest80 quits (~Guest@2409:4073:210:5665:5582:5742:1289:a32d) (Ping timeout: 260 seconds)
11:43:24 APic joins (apic@apic.name)
11:52:19 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:56:07 × _xor quits (~xor@72.49.195.228) (Ping timeout: 252 seconds)
11:57:23 _xor joins (~xor@72.49.195.228)
12:12:13 delYsid parts (~user@user/delYsid) (ERC 5.4.1 (IRC client for GNU Emacs 30.0.50))
12:13:25 × gastus quits (~gastus@5.83.191.28) (Remote host closed the connection)
12:13:40 gastus joins (~gastus@5.83.191.28)
12:17:35 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
12:18:00 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:18:29 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
12:21:11 <eldritchcookie[m> how do i translate my haskell application?
12:21:29 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
12:21:43 × jbalint quits (~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) (Quit: Bye!)
12:21:53 jbalint joins (~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7)
12:24:02 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 268 seconds)
12:25:19 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:26:20 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
12:32:00 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
12:32:30 cfricke joins (~cfricke@user/cfricke)
12:40:38 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
12:43:29 <akegalj> eldritchcookie[m: maybe some of these packages could help https://hackage.haskell.org/packages/search?terms=i18n
12:45:20 × mmhat quits (~mmh@p200300f1c71c1721ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
12:51:08 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
12:53:09 × cassaundra quits (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) (Ping timeout: 255 seconds)
12:54:01 cassaundra joins (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net)
12:54:16 cheater_ joins (~Username@user/cheater)
12:56:13 × cheater_ quits (~Username@user/cheater) (Read error: Connection reset by peer)
12:56:58 cheater_ joins (~Username@user/cheater)
12:57:38 lyle joins (~lyle@104.246.145.237)
12:57:39 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
12:57:43 cheater_ is now known as cheater
12:59:54 Midjak joins (~Midjak@82.66.147.146)
13:01:42 × xff0x quits (~xff0x@ai081074.d.east.v6connect.net) (Ping timeout: 255 seconds)
13:02:48 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
13:03:24 xff0x joins (~xff0x@178.255.149.135)
13:09:03 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 268 seconds)
13:10:38 xff0x joins (~xff0x@2405:6580:b080:900:98be:c248:cb93:86bb)
13:12:58 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 246 seconds)
13:14:27 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:17:03 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
13:17:51 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
13:17:52 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
13:21:59 × xff0x quits (~xff0x@2405:6580:b080:900:98be:c248:cb93:86bb) (Ping timeout: 246 seconds)
13:23:55 xff0x joins (~xff0x@ai081074.d.east.v6connect.net)
13:28:31 gpncarl joins (~gpncarl@222.249.231.4)
13:30:10 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
13:30:23 × CiaoSen quits (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
13:30:29 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
13:30:43 × m1dnight quits (~christoph@78.22.0.121) (Ping timeout: 252 seconds)
13:30:51 × gpncarl_ quits (~gpncarl@222.249.231.4) (Ping timeout: 248 seconds)
13:31:23 m1dnight joins (~christoph@78-22-0-121.access.telenet.be)
13:32:13 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 246 seconds)
13:33:15 jero98772 joins (~jero98772@2800:484:1d80:d8ce:afc:ac:1a46:ba2c)
13:35:34 c0c0 joins (~coco@212.51.146.137)
13:46:28 × c0c0 quits (~coco@212.51.146.137) (Quit: WeeChat 3.7.1)
13:47:41 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
13:51:27 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:1c4d:fe05:e8b3:ebb4) (Ping timeout: 248 seconds)
13:52:35 polyphem joins (~polyphem@2a02:810d:840:8754:4d31:9178:35f:6608)
13:53:19 thegeekinside joins (~thegeekin@189.180.66.126)
13:55:11 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 248 seconds)
13:56:11 polyphem_ joins (~rod@2a02:810d:840:8754:56e9:3db:815e:932d)
13:57:20 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
13:57:50 cheater_ joins (~Username@user/cheater)
14:01:28 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
14:01:34 cheater_ is now known as cheater
14:03:50 × akegalj quits (~akegalj@93.138.138.10) (Quit: Lost terminal)
14:04:47 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf)
14:05:02 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
14:09:03 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Ping timeout: 248 seconds)
14:09:16 L29Ah joins (~L29Ah@wikipedia/L29Ah)
14:12:48 <akadude[m]> Can you recommend a package that allows to generate a type of tags for a sum-type, like this:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/6f629f96c0094021e7707e46a0de9e0f51cbcab0>)
14:13:19 freeside joins (~mengwong@103.252.202.170)
14:14:05 <segfaultfizzbuzz> is there such a thing as a lazy/nonstrict language (like haskell) but which is strict by compilation? put another way, do i *need* a runtime to do lazy evaluation? i guess that's just --XStrict or whateer the option is, eh?
14:15:13 ystael joins (~ystael@user/ystael)
14:15:25 <akadude[m]> What does "strict by compilation" means?
14:17:15 enoq joins (~enoq@194-208-133-121.lampert.tv)
14:17:27 <merijn> segfaultfizzbuzz: The question is: what do you mean by "need" and "runtime" ;)
14:17:48 <merijn> segfaultfizzbuzz: Do you need a separate "runtime system" library that gets linked into code? No.
14:18:09 <geekosaur> any strict language can be made lazy by replacing values with functions that produce those values; it's just inefficient
14:18:15 <merijn> But keep in mind that even (hosted) C has a runtime system (granted, a far more minimal one than Haskell(
14:20:00 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
14:20:29 <merijn> segfaultfizzbuzz: Before any tries to answer this question, I think we should maybe clarify what you think the runtime system is/does and why you think this relates to strict vs laziness
14:21:34 × gastus quits (~gastus@5.83.191.28) (Ping timeout: 246 seconds)
14:23:43 gastus joins (~gastus@5.83.191.28)
14:25:04 × acidjnk quits (~acidjnk@p200300d6e715c433acad43775727ee93.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
14:27:16 <mauke> > dataTypeConstrs (dataTypeOf False)
14:27:18 <lambdabot> [False,True]
14:27:57 <mauke> > dataTypeConstrs (dataTypeOf (Just 'x'))
14:27:59 <lambdabot> [Nothing,Just]
14:28:41 <mauke> akadude[m]: does that count?
14:32:23 <segfaultfizzbuzz> merijn: well my poor-quality impression is that i guess somehow something (GHC/haskell runtime?) decides what uh, thunk? code? is being invoked, perhaps via some IO, and then from that heuristically decides what needs to be evaluated,...
14:33:00 <mauke> what's heuristic about it?
14:33:51 <segfaultfizzbuzz> well haskell is not lazy but rather nonstrict, right? so sometimes it will decide that something needs to be evaluated based on some kind of guess rather than empirical need
14:34:06 <segfaultfizzbuzz> kind of like speculative evaluation,... or this is my impression anyway
14:34:47 <mauke> lazy is a subset of non-strict
14:35:06 <segfaultfizzbuzz> right, you could call that "strictly lazy" lol
14:35:26 <mauke> laziness is about caching expressions when they are evaluated
14:35:45 <segfaultfizzbuzz> oh wow what? it's about caching?
14:35:58 <segfaultfizzbuzz> that's rather interesting
14:36:28 <mauke> consider something like f x = x + x; f (sqrt 5)
14:36:45 <mauke> a strict language would evaluate sqrt 5 before calling f
14:36:55 <merijn> segfaultfizzbuzz: That's not "the runtime", GHC just generates code for "what happens when this is evaluated"
14:37:01 <mauke> a non-strict language enters f first
14:37:10 <merijn> segfaultfizzbuzz: The runtime does not control evaluation
14:37:20 <merijn> The code does
14:37:22 <segfaultfizzbuzz> oh,... but IO...?
14:37:35 <mauke> and as far as I know, "laziness" refers to not evaluating sqrt 5 twice
14:37:37 <merijn> segfaultfizzbuzz: the "the runtime does IO" story is a lie
14:37:48 <merijn> segfaultfizzbuzz: A useful lie, that helps people get started
14:37:52 <segfaultfizzbuzz> merijn: hmmmm?
14:37:59 <merijn> but a lie not remotely resembling reality nonetheless
14:38:54 × _xor quits (~xor@72.49.195.228) (Ping timeout: 255 seconds)
14:38:57 <merijn> segfaultfizzbuzz: The "IO execution" and "Haskell evaluation" code that we often tell beginners are "completely" separate are completely intertwined and mixed together during code generation
14:39:03 × Vajb quits (~Vajb@2001:999:484:9db9:7ff5:c370:5511:7e1c) (Ping timeout: 246 seconds)
14:39:24 × rlj quits (~rlj@c-5eea7342-74736162.cust.telenor.se) (Quit: Client closed)
14:39:53 <merijn> They are *conceptually* separate. And the compiler is tasked with maintaining that conceptual separation, we should not be able to observe that in the actual machine code it's not there
14:40:01 <mauke> well, the "runtime" in that sense is just some instructions baked into the compiled code
14:40:03 master_ joins (~master@user/masterbuilder)
14:40:08 × master_ quits (~master@user/masterbuilder) (Client Quit)
14:40:21 <merijn> mauke: Well, that was kinda what I was getting at with my question "what is a runtime"
14:40:32 <mauke> right
14:40:48 <merijn> A compiler can "simply" emit all the assembly for the runtime directly embedded into the executable. Is that a runtime still? Yes? no?
14:40:48 <segfaultfizzbuzz> hmm okay. so only garbage collection comes from the runtime but not the eval
14:41:02 masterbuilder joins (~masterbui@user/masterbuilder)
14:41:05 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
14:41:46 <merijn> segfaultfizzbuzz: The main reason the runtime is a "separate" library we link into the program is mostly pragmatics: only have to compile it once instead of for every program and the separation makes it easier to maintain/hack on the runtime
14:42:10 <merijn> segfaultfizzbuzz: Conceptually you could "just" insert the assembly code for the GC directly into every executable
14:42:33 <segfaultfizzbuzz> interesting
14:42:48 <mauke> you could argue that the code for stack management in function calls is part of the "C runtime"
14:42:50 Vajb joins (~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959)
14:42:56 <mauke> if you squint hard
14:43:09 _xor joins (~xor@72.49.195.228)
14:43:10 <mauke> uh, in the context of C, I mean
14:43:17 <merijn> segfaultfizzbuzz: If you are curious about getting an idea of how GHC operates at a more fundamental implementation level, I recommend reading the STG paper
14:43:26 Guest45 joins (~Guest45@global-5-144.n-2.net.cam.ac.uk)
14:43:35 <merijn> segfaultfizzbuzz: And ezyang's draft about the RTS
14:44:12 <segfaultfizzbuzz> merijn: i had started working with exa on that, i am more like a mathematician and when i hit the assembly code in the STG paper i go blind
14:44:21 <merijn> segfaultfizzbuzz: How to compile a lazy functional language to asm: https://www.microsoft.com/en-us/research/wp-content/uploads/1992/04/spineless-tagless-gmachine.pdf
14:44:54 <merijn> segfaultfizzbuzz: And the RTS: http://ezyang.com/jfp-ghc-rts-draft.pdf
14:45:10 <segfaultfizzbuzz> merijn: so i was trying to understand lazy evalutaion at a more abstract level but i can't understand what the "graph" is in the first place
14:45:26 freeside joins (~mengwong@103.252.202.170)
14:45:31 <geekosaur> I don't actually recommend the STG paper, it's not about how lazy languages work, it's about how to optimize them
14:45:46 <segfaultfizzbuzz> but from what you are saying i would infer that the "graph" is *not* the program state
14:46:01 <mauke> consider expressions and how you'd represent them as a tree
14:46:04 <merijn> segfaultfizzbuzz: I don't recall much assembly in the STG paper
14:46:14 <mauke> like a * (b + c)
14:46:36 <merijn> geekosaur: If the context is "how does Haskell evaluation (at an actual implementation level) function" I think it's relevant
14:46:38 <Guest45> Hi everyone, trying haskell after a very long time. When I am running stack build, I am getting this error message (I am wondering how to resolve this error message):
14:46:39 <Guest45> Could not load module ‘Crypto.Number.Basic’
14:46:39 <Guest45> It is a member of the hidden package ‘cryptonite-0.30’.
14:46:44 <merijn> geekosaur: Not sure what else you'd recommend?
14:47:15 <merijn> Guest45: Sounds like you forgot to list cryptonite as a dependency in your cabal file/whatever the yaml nonsense hpack uses
14:47:40 <merijn> Guest45: You cannot access packages not explicitly listed as dependencies
14:47:52 <segfaultfizzbuzz> my program is a tree, right? an AST in particular. but somehow this becomes a graph
14:48:17 <merijn> segfaultfizzbuzz: It's a graph because we allow recursive references
14:48:34 <merijn> segfaultfizzbuzz: "let ones = 1 : ones" is obviously not a tree, that's a cycle right there
14:48:35 <segfaultfizzbuzz> so "the graph" *is* the AST?
14:48:50 <segfaultfizzbuzz> and it is *not* the program state?
14:49:00 <merijn> segfaultfizzbuzz: No, the graph is the expressions referring too other expressions
14:49:32 <akadude[m]> mauke: yes, thanks, looks like it
14:50:05 <segfaultfizzbuzz> let me fix that: "AST with cycles allowed" is precisely equal to "the graph"?
14:50:07 <merijn> i.e. "let ones = 1 : ones in ones" is "ones" which refers to 1 thing, a : constructor, which refers to two things "1" and the "ones" mentioned at the start
14:50:19 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:50:44 <mauke> segfaultfizzbuzz: it's not exactly the syntax tree
14:50:45 × _xor quits (~xor@72.49.195.228) (Quit: WeeChat 3.8)
14:50:45 <merijn> segfaultfizzbuzz: The AST refers to the abstract structure of the syntax, the graph in the STG refers to the graph of expressions that arise as we evaluate the program described by that AST
14:51:11 <segfaultfizzbuzz> merijn: so then the graph *is* the program state
14:51:30 <mauke> part of it, yes
14:51:52 <segfaultfizzbuzz> if i read a picture of a dog into RAM then the dog picture appears somewhere in the graph
14:52:29 <mauke> as long as some value in your program is still referring to the picture, yes
14:52:51 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
14:52:56 <mauke> but the program is allowed to forget about things as it proceeds
14:52:58 ph88 joins (~ph88@ip5b426553.dynamic.kabel-deutschland.de)
14:53:10 <mauke> > let x = 42 in "no"
14:53:15 <lambdabot> "no"
14:53:41 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
14:53:41 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
14:53:41 wroathe joins (~wroathe@user/wroathe)
14:54:06 <segfaultfizzbuzz> so the graph *is* the complete program state, including the "binary/asm"
14:55:21 <mauke> I don't think about it that way
14:55:40 <mauke> for example, a unix process has a "current working directory" that is not stored within the haskell universe, so to speak
14:55:54 <segfaultfizzbuzz> well i can't understand the STG without knowing what the G is, exactly
14:56:33 <mauke> I'm pretty sure the graph is a runtime representation of expression
14:56:48 <mauke> +s
14:58:02 <mauke> in a "conventional" language, you may have some code (list of instructions) and an environment that just maps names to values
14:58:29 <mauke> but with non-strict semantics, the environment may contain full (unevaluated) expressions
14:59:43 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
14:59:48 <mauke> and expressions can refer to each other and even themselves (or rather, expressions that refer to names can be bound to the same names), and that's how you get loops in the structure
15:00:04 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:00:17 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:00:29 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
15:00:32 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
15:00:46 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
15:00:56 × Luj quits (~Luj@2a01:e0a:5f9:9681:40ef:5a70:1bf4:6920) (Quit: Ping timeout (120 seconds))
15:01:15 <mauke> "forcing" a lazy value means evaluating the subexpression and replacing it by its result in the graph
15:01:15 Luj joins (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb)
15:01:19 × gastus quits (~gastus@5.83.191.28) (Ping timeout: 252 seconds)
15:01:19 jpds joins (~jpds@gateway/tor-sasl/jpds)
15:01:25 califax joins (~califax@user/califx)
15:01:45 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:02:16 <raehik> is there ever any performance to be gained by passing around `Addr#` and `a -> (# State# RealWorld, a #)` instead of `Ptr Word8` and `IO a`
15:02:30 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
15:02:45 <geekosaur> merijn, sorry for delay, had some things come up elsewhere. but the STG paper is about how STG, not why STG
15:02:57 <raehik> or will GHC almost certainly remove the indirections in the latter
15:03:00 <segfaultfizzbuzz> so the graph contains either thunks or values (which are not thunks)
15:03:14 <geekosaur> The Wikipedia overview of graph reduction does a somewhat better job of the why, although not to my mind ideal
15:04:03 <segfaultfizzbuzz> and then the thunk contains some code, which may point at some other values, or some other thunks, including itself
15:04:13 <mauke> segfaultfizzbuzz: you don't need to explicitly distinguish between the two, I think
15:04:57 <segfaultfizzbuzz> not distinguishing sounds unsafe
15:05:40 <mauke> consider 'x = 4; y = 2 + 2'
15:05:48 __monty__ joins (~toonn@user/toonn)
15:06:33 <mauke> ignoring optimization for a moment, you could represent this as x being bound to "the expression 4" and y to "the expression 2 + 2"
15:06:51 <segfaultfizzbuzz> ok...
15:06:57 <mauke> the first time the value of y is demanded, it will be reduced to 4
15:07:05 <segfaultfizzbuzz> right
15:07:07 <mauke> that is, "the expression 4", just like x
15:07:14 <segfaultfizzbuzz> yes
15:07:28 <mauke> in this model it's all just expressions
15:08:42 <segfaultfizzbuzz> so (1) the AST is promoted to a graph (but not *the* graph) by allowing cycles and then
15:09:21 <merijn> raehik: In the tight loops parts where that overhead matters I would expect it optimised away
15:09:52 <segfaultfizzbuzz> (2) some kind of program initialization creates **the graph** by looking at main or something and reading some initial things into memory
15:10:26 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
15:12:09 oxide joins (~lambda@user/oxide)
15:12:47 <segfaultfizzbuzz> and then (3) something (a thread? possibly several threads?) looks at this graph, but somehow it can jump around however it pleases in this graph and make decisions about which expressions to evaluate (because not being able to jump around would be considered strict eval)
15:12:58 gastus joins (~gastus@5.83.191.28)
15:13:43 <segfaultfizzbuzz> so haskell is 1 and 2 and 3 and that's it... or i am looking to correct those anyway
15:14:35 CiaoSen joins (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
15:18:18 <segfaultfizzbuzz> oh right and let me add to 3: the "thing" (thread?) can modify the graph (?) such as reading some values into memory or perhaps replacing aan expression with a value via evaluation
15:18:33 <lyxia> the thing can be called a virtual machine
15:19:04 <segfaultfizzbuzz> but the thing/vm is stateless...?
15:19:19 freeside joins (~mengwong@103.252.202.170)
15:19:53 <segfaultfizzbuzz> but i am guessing from the silence that this description is correct?
15:20:12 <lyxia> it's stateful, your previous messages are right
15:20:28 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
15:20:32 × oxide quits (~lambda@user/oxide) (Ping timeout: 248 seconds)
15:20:36 × Guest45 quits (~Guest45@global-5-144.n-2.net.cam.ac.uk) (Quit: Client closed)
15:21:13 <segfaultfizzbuzz> the graph being the program state and the vm being stateful seems like a contradiction, and
15:21:24 lortabac joins (~lortabac@2a01:e0a:541:b8f0:6866:bb15:ee8d:e014)
15:21:32 <lyxia> except the part about "not jumping around would be considered strict eval"
15:21:48 <lyxia> it's just different rules about where to jump when evaluating an expression
15:21:52 <segfaultfizzbuzz> how does the vm decide where to jump (especially if that is not decided at runtime, per above discussion)?
15:22:00 × MajorBiscuit quits (~MajorBisc@c-001-020-009.client.tudelft.eduvpn.nl) (Ping timeout: 255 seconds)
15:23:31 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
15:24:03 MajorBiscuit joins (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a)
15:25:33 <segfaultfizzbuzz> lyxia: i thought that the key difference between lazy and strict eval was that the vm can go "outside in" on the graph, to "leap wherever it pleases" and not be pinned to reduction of any specific subregion of the graph?
15:26:24 Charles joins (~Charles@host-23-251-65-156.VALOLT4.epbfi.com)
15:26:28 <kaol> JOSE is... Something. All I have is a Text like "Bearer asdf" where asdf is a JWT and how do I verify it with this. There's verifyJWS' and I already found something for the first argument but is there some Text -> JWS t0 p0 h0 somewhere?
15:26:35 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
15:26:41 <geekosaur> with strict eval any portion of the graph is reduced as soon as it's visited; with non-strict, it's reduced when its value is needed
15:29:29 <lyxia> the best way to understand this might be to just read the paper that defines the syntax and the operational semantics
15:29:37 <kaol> I guess decodeCompact is it.
15:29:43 <segfaultfizzbuzz> geekosaur: if i could understand this distinction i think i would understand a lot more,... so the vm is say, a single thread, and the thread has an idea of "where it currently is"
15:29:51 <lyxia> https://www.microsoft.com/en-us/research/wp-content/uploads/1992/04/spineless-tagless-gmachine.pdf sections 4 and 5
15:30:05 oxide joins (~lambda@user/oxide)
15:30:12 <segfaultfizzbuzz> for strict eval we can immediately know what to do, but for lazy eval we need more state, in particular a way of defining "need"
15:30:34 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8)
15:30:51 GuestW48 joins (~GuestW48@46.146.247.46)
15:32:02 <lyxia> no in either case we know exactly what to do
15:32:21 <segfaultfizzbuzz> "when the value of the thunk is required, the thunk is forced" -- page 11...
15:32:37 <int-e> The big differences to strict evaluation are that to do lazy evaluation you need a (heap) representation for unevaluated values, and you must be able to replace such a value by the final value once it has been computed.
15:32:38 <lyxia> if you have a function application f x, in a strict language you evaluate x, push its value on the stack, then jump to f
15:33:00 <lyxia> in a lazy language you immediately push x on the stack and jump to f
15:33:35 <geekosaur> you push the thunk corresponding to x, without evaluating it first
15:34:06 <int-e> Where x is an expression? If it were a variable, it would already be evaluated in a strict language.
15:34:18 <lyxia> right
15:34:48 <geekosaur> evaluation happens when its value is needed, which is often later when output is done that involves the value of x as possibly modified by other expressions it becomes associated with (for exaple, `x + 1` does not force evaluation of x, it just creates a new thunk)
15:35:18 <segfaultfizzbuzz> lyxia: lazy evaluation does not jump as it pleases, but rather it is *strictly outermost* whereas strict eval is *strictly innermost*?
15:39:26 <lyxia> something like that but I'm not sure those word make sense if you haven't already looked at the formalism
15:40:29 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
15:42:11 <int-e> . o O ( All this jumping around is making me dizzy. )
15:42:27 <segfaultfizzbuzz> lyxia: actually i am thinking "strictly outermost eval" and "strictly innermost eval" is very likely to clear up my confusion here
15:42:44 <segfaultfizzbuzz> because at the end of the day we are talking about a computer, and *something* must be strict
15:43:22 <segfaultfizzbuzz> that is to say *somehow* the computer needs to determine what happens next
15:43:39 <segfaultfizzbuzz> so therefore "lazy" and "nonstrict" are incredibly misleading terms
15:44:40 <segfaultfizzbuzz> because i was thinking that the vm (threads?) would be able to leap around the graph however it pleases, potentially based on complicated heuristics
15:45:01 <int-e> You say "jumping around", I see "jmp *%rbx".
15:45:40 <segfaultfizzbuzz> int-e: i would guess the difference here is that leaping (jumping around) would not carry the stack/cache?
15:45:52 <segfaultfizzbuzz> we will call it "leaping"
15:46:14 <int-e> no, there's still a stack
15:46:15 <segfaultfizzbuzz> and so the conclusion here is that lazy or nonstrict evaluation does not leap?
15:46:36 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
15:47:07 <segfaultfizzbuzz> like, get a big sheet of paper, draw your initial program graph on it with pencil
15:47:13 <int-e> There are several levels of abstraction here and I have no clue which level we're at... I suspect we're merrily jumping around across all of them.
15:47:36 <segfaultfizzbuzz> hahaha i am trying to think about a sheet of paper and pencil if that is at all useful?
15:47:47 <segfaultfizzbuzz> imagine instructing a 5th grader in how to do this
15:48:30 <segfaultfizzbuzz> by hand
15:48:32 <int-e> I'd do the expression level outermost reduction, probably. Fully symbolic, no sign of jumps, not even graphs.
15:48:43 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:48:50 <int-e> Or, if I really want graphs, graphs encoded with `let`.
15:49:17 mmhat joins (~mmh@p200300f1c71c1721ee086bfffe095315.dip0.t-ipconnect.de)
15:49:17 × mmhat quits (~mmh@p200300f1c71c1721ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
15:49:25 <segfaultfizzbuzz> right but the point, again, is that it is outermost
15:49:57 Sgeo joins (~Sgeo@user/sgeo)
15:50:35 <int-e> (having `let` makes finding the "outermost" redex harder)
15:51:02 <mjrosenb> htm, does ghcjs not support -fprof-auto or -fprof-auto-calls? both of them seem to lead to a runtime error
15:51:10 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:51:19 <segfaultfizzbuzz> for example, the graph reduction cannot say: "ah look, lots of network bandwidth is suddenly available, i am going to suspend my fibonacci calculation and leap to the file upload"
15:51:44 <int-e> "graph reduction" absolutely can do that
15:51:56 JimL joins (~quassel@89-162-26-217.fiber.signal.no)
15:52:01 <segfaultfizzbuzz> oh?
15:52:02 <int-e> that notion is so abstract that it doesn't come with a predefined reduction strategy.
15:52:17 <segfaultfizzbuzz> graph reduction in general can, but outermost evaluation cannot
15:52:33 <int-e> (a strategy picks a next redex out of the available redexes)
15:52:36 <segfaultfizzbuzz> because the outermost evaluation may have concluded that fibonacci is what it is currently doing
15:52:54 <segfaultfizzbuzz> what is a redex? and what is the difference between a redex and a thunk?
15:53:14 <merijn> segfaultfizzbuzz: redex = REDucible EXpression
15:53:17 <int-e> "file upload" also seems to be way outside the formalism
15:53:34 <segfaultfizzbuzz> ok so a redex is something which has not been reduced to a value (so, not a 32 bit integer)
15:53:36 <int-e> though I'm sure there are ways to squeeze it in
15:54:03 × ddellacosta quits (~ddellacos@146.70.166.221) (Ping timeout: 255 seconds)
15:54:20 <segfaultfizzbuzz> int-e: well, fine, "the GPU is now at 0% utilization, i am going to switch to this matrix multiplication task rather than my CPU integer fibonacci task"
15:54:22 <int-e> sorry for expanding the vocabulary
15:54:24 freeside joins (~mengwong@103.252.202.170)
15:54:32 <segfaultfizzbuzz> int-e: no problem
15:54:37 <lyxia> If I were to teach a 5th grader operational semantics I would give them lots of examples to work through. I think that would work better than throw around buzzwords that are bound to be misinterpreted.
15:55:08 <segfaultfizzbuzz> "graph reduction in general can, but outermost evaluation cannot" -- is this true?
15:55:22 × polyphem_ quits (~rod@2a02:810d:840:8754:56e9:3db:815e:932d) (Ping timeout: 246 seconds)
15:56:23 polyphem_ joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
15:57:17 <GuestW48> What is the quickest way to check if a package (by name) on stackage (curent project lts), can this be done using some tool from cli?
15:57:28 acidjnk joins (~acidjnk@p200300d6e715c43364f4044e674f7620.dip0.t-ipconnect.de)
15:57:45 <int-e> Graph reduction has rules for replacing subgraphs (patterns) by different subgraphs, and a graph to perform these reductions on. Any pattern match can qualify for reduction, so it can be completely nondeterministic.
15:59:00 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
15:59:26 <segfaultfizzbuzz> so there is "graph reduction in general" and then there is haskell, which is nonstrict/lazy. i am guessing here that haskell is a specialization of general graph reduction?
15:59:51 <segfaultfizzbuzz> equivalently, haskell is outermost evaluation rather than any graph reduction evaluation?
16:00:33 <int-e> It's the outermost strategy that makes this mostly deterministic. (When compiling Haskell code, the evaulation order is *not* fully specified; if you have x + y where x,y :: Int, then the compiler can evaluate x first or y first.)
16:01:07 <int-e> "the compiler" -- it happens at runtime but it's the compiler that makes this choice.
16:02:15 <segfaultfizzbuzz> so you are confirming that haskell is a restrictive outermost specialization of general graph reduction?
16:02:31 <int-e> yes
16:02:37 <segfaultfizzbuzz> ah!!!
16:03:04 <segfaultfizzbuzz> thank you that brings great relief
16:03:29 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
16:03:42 <segfaultfizzbuzz> and i am guessing as a really bad programmer that this specialization is motivated by the need to have some kind of local state, such as in a vm thread of execution or similar?
16:03:57 <segfaultfizzbuzz> for practical performance reasons or other heuristics
16:05:56 <lyxia> GuestW48: stack install my-package? It's odd that there isn't an eqivalent to cabal info
16:07:26 <int-e> segfaultfizzbuzz: I'd say the practical motivation is to avoid computing values that aren't used. This has theoretical backing (left-most outermost reduction is *normalizing* (yay, more vocabulary) in the lambda calculus)
16:08:15 <int-e> segfaultfizzbuzz: low-level concerns only enter the picture when you flesh out the details of how graph reduction is actually implemented, as the STG paper does.
16:09:37 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
16:09:38 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
16:09:43 <segfaultfizzbuzz> if what i am hearing is correct then i would formally recommend that haskell folks call their language outermost rather than lazy
16:09:54 <segfaultfizzbuzz> (or nonstrict)
16:09:55 <GuestW48> lyxia: I've read that `stack install package` is not what it seems to be
16:10:08 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
16:10:26 jinsun joins (~jinsun@user/jinsun)
16:11:27 <int-e> segfaultfizzbuzz: Funny. I'm pretty sure the report actually says "non-strict".
16:12:11 <segfaultfizzbuzz> yes i added that correction
16:12:16 <int-e> segfaultfizzbuzz: Anyway, "lazy" is stronger than "outermost". It also implies that values are shared, so that evaluating them once benefits all uses of the value.
16:13:11 <segfaultfizzbuzz> shared across threads? there seems to be a reluctance to say thread...
16:13:39 <lyxia> GuestW48: I mean whatever it is, if it's not in your snapshot it's going to fail so you can use that to tell whether a package is in your snapshot
16:14:59 <int-e> I guess the sharing is already implied when you do graph reduction (because it's a graph rather than a tree *because of* sharing)
16:15:41 <segfaultfizzbuzz> well i mean when i am looking at my big piece of paper, my friends might come and go and help me reduce my graph
16:15:42 <int-e> > let x = [1..1000000] in x + x -- only evaluates x once, not twice; the two uses of `x` *share* the value.
16:15:44 <lambdabot> error:
16:15:44 <lambdabot> • No instance for (Num [Integer])
16:15:44 <lambdabot> arising from a use of ‘e_111000000’
16:15:49 <int-e> oops
16:15:58 <int-e> > let x = sum [1..1000000] in x + x
16:16:00 <lambdabot> 1000001000000
16:16:12 <segfaultfizzbuzz> ok but you can share due to something about how threads work
16:16:22 <int-e> it has nothing to do with threads
16:16:23 <segfaultfizzbuzz> this would be impractical if you had to go all the way to RAM
16:17:06 <geekosaur> how does someone get this confused?
16:17:50 freeside joins (~mengwong@103.252.202.170)
16:18:01 <lyxia> by trying to guess what's in the paper withour reading it
16:18:13 <int-e> threads are a complication that interferes with graph reduction (yes, sharing works across threads and one thread will benefit when another thread evaluates a value that the first thread needs).
16:18:36 <segfaultfizzbuzz> i am looking at the paper, as i have made several attempts with STG papers, and it contains so much jargon that i can't understand
16:19:20 <int-e> I wouldn't worry about threads or IO or any of that when learning about lazy evaluation.
16:20:06 × foul_owl quits (~kerry@157.97.134.63) (Read error: Connection reset by peer)
16:20:42 <segfaultfizzbuzz> int-e: so if i did not have outermost evaluation then i may sometimes evaluate x twice is the point?
16:21:14 <int-e> this is more about graph reduction than about strategy.
16:21:51 <segfaultfizzbuzz> is there a language which is built on "general graph reduction" rather than a specialization to strict/nonstrict/lazy eval?
16:21:57 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 252 seconds)
16:22:22 <int-e> geekosaur: It may be jumping too many steps of a staircase at once, resulting in a tumble.
16:22:41 <geekosaur> segfaultfizzbuzz, the point here is that when parts of a program hold a "value", they hold a thunk. that thunk can be updated by one of the holders, and the other holders will hold the updated thunk. (here a "thunk" is basically a pointer)
16:23:13 <int-e> And of course, we're constantly mixing levels of abstraction.
16:23:15 <geekosaur> so once the subgraph has been evaluated, all other references to it have the evaluated value instead of having to re-evaluate the subgraph
16:23:30 <segfaultfizzbuzz> int-e: for the most part i am trying to focus on the highest level of abstraction
16:23:37 <geekosaur> this is why we use a reducible tree
16:23:40 <segfaultfizzbuzz> int-e: again, paper and pencil on a big sheet of paper
16:24:17 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
16:25:05 <geekosaur> and to answer your question about general graph reduction, I think lisp/scheme count there?
16:26:52 × ubert quits (~Thunderbi@p200300ecdf130131a36700041663782c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
16:26:52 ubert1 is now known as ubert
16:27:07 <segfaultfizzbuzz> oh really? i thought they were strict...
16:27:13 <int-e> For pen&paper I'd start with things like let x = sum [1..2] in x + x --> ... --> let x = 3 in x + x --> 3 + 3 --> 6
16:29:09 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
16:29:16 freeside joins (~mengwong@103.252.202.170)
16:29:24 <GuestW48> lyxia: and what `stack install package` is going to do else?
16:33:30 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
16:34:35 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:35:44 <geekosaur> segfaultfizzbuzz, they're strict unless you introduce laziness with a lambda. but they're also raw ASTs and therefore trees (unloess you use something like MacLisp (nconc) to introduce a loop). but they still make more sense when treated as trees
16:37:19 cheater_ joins (~Username@user/cheater)
16:38:05 <int-e> They have a runtime system that provides garbage collection; strictness doesn't save you from needing that.
16:39:43 foul_owl joins (~kerry@157.97.134.62)
16:39:59 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
16:40:03 cheater_ is now known as cheater
16:41:37 <segfaultfizzbuzz> so then the answer i suppose is that there is not a language (not not a well-known one, anyway) which is based on general graph reduction
16:43:10 <geekosaur> general graph reduction is a hard problem, iirc
16:43:30 ddellacosta joins (~ddellacos@143.244.47.71)
16:43:48 freeside joins (~mengwong@103.252.202.170)
16:48:30 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
16:48:30 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
16:49:01 <int-e> "based on"... Haskell comes pretty close anyway. Note that the compiler, as part of optimizing code, routinely does reductions that are not outermost at all.
16:49:46 <int-e> (keyword "partial evaluation"?)
16:51:16 <c_wraith> Haskell is supposed to guarantee termination if there is a terminating evaluation order. That's about as strong a statement as is made
16:51:55 <int-e> I'd also ask why you'd want to implement arbitrary graph reduction in the first place, in the context of programming. Though there are some fun variants (like interaction nets with their alluring promise of great parallelism that's, so far, all eaten up by bookkeeping overhead when you actually implement them)
16:52:18 <c_wraith> someone who used to be a regular here has a language/vm based on optimal reduction
16:52:32 <c_wraith> they've posted about it in the /r/haskell subreddit a few times.
16:53:40 <c_wraith> https://github.com/VictorTaelin/Formality
16:54:01 <c_wraith> IIRC. maybe I'm mixing stuff up
16:54:38 × ubert quits (~Thunderbi@2a02:8109:abc0:6434:2da3:d0c8:ac16:be0) (Remote host closed the connection)
16:54:57 <int-e> the keyword does turn up at least
16:55:42 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
16:58:09 <int-e> c_wraith: there's also https://github.com/HigherOrderCO/HVM in that niche
16:58:28 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
17:01:46 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Client Quit)
17:01:52 × cheater quits (~Username@user/cheater) (Read error: Connection timed out)
17:01:59 × polyphem quits (~polyphem@2a02:810d:840:8754:4d31:9178:35f:6608) (Ping timeout: 264 seconds)
17:02:09 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
17:03:20 freeside joins (~mengwong@103.252.202.170)
17:03:21 cheater joins (~Username@user/cheater)
17:03:22 × ddellacosta quits (~ddellacos@143.244.47.71) (Quit: WeeChat 3.8)
17:05:34 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
17:05:35 × oxide quits (~lambda@user/oxide) (Ping timeout: 252 seconds)
17:05:59 × polyphem_ quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 260 seconds)
17:07:47 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 252 seconds)
17:08:24 ddellacosta joins (~ddellacos@146.70.165.157)
17:12:11 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds)
17:15:08 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
17:17:18 <int-e> c_wraith: oh and by the same person/people (not sure how many there are)
17:19:43 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
17:20:35 polyphem_ joins (~rod@2a02:810d:840:8754:b293:2a07:4a12:170f)
17:20:50 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
17:22:01 × zeenk quits (~zeenk@2a02:2f04:a214:1e00::7fe) (Quit: Konversation terminated!)
17:22:38 <segfaultfizzbuzz> " HVM shares the same initial core as Rust (an affine λ-calculus), has great memory management (no thunks, no garbage-collection). Some people think interaction nets are an overhead, but that's not the case - they're the lack of overhead. " fun quote
17:22:59 <segfaultfizzbuzz> "For example, a lambda on HVM uses only 2 64-bit pointers, which is about as lightweight as it gets. "
17:24:07 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf)
17:24:52 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:25:12 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
17:26:11 × shapr quits (~user@net-5-88-239-92.cust.vodafonedsl.it) (Ping timeout: 255 seconds)
17:26:29 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
17:27:48 × Vq quits (~vq@90-227-195-41-no77.tbcn.telia.com) (Quit: Server maintenance)
17:28:02 × enoq quits (~enoq@194-208-133-121.lampert.tv) (Quit: enoq)
17:29:46 <segfaultfizzbuzz> "Interaction nets are essentially deterministic and cannot model non-deterministic computations directly." - very interesting
17:31:13 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
17:31:56 Vq joins (~vq@90-227-195-41-no77.tbcn.telia.com)
17:32:23 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
17:33:21 <segfaultfizzbuzz> "non-linearity of the STG model" - interesting
17:34:03 Lord_of_Life_ is now known as Lord_of_Life
17:34:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Remote host closed the connection)
17:35:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:36:25 freeside joins (~mengwong@103.252.202.170)
17:39:21 Atrx joins (~Atrx@2401:4900:1cb9:134a:e0f0:9862:78c9:557e)
17:39:34 × Atrx quits (~Atrx@2401:4900:1cb9:134a:e0f0:9862:78c9:557e) (Client Quit)
17:39:35 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
17:40:47 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 248 seconds)
17:42:37 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
17:42:54 × MajorBiscuit quits (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) (Quit: WeeChat 3.6)
17:43:06 freeside joins (~mengwong@103.252.202.170)
17:43:22 cheater_ joins (~Username@user/cheater)
17:43:40 ec_ joins (~ec@gateway/tor-sasl/ec)
17:45:11 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
17:45:32 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
17:46:15 cheater__ joins (~Username@user/cheater)
17:46:15 cheater__ is now known as cheater
17:46:18 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:48:46 werneta joins (~werneta@137.79.195.231)
17:48:48 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
17:49:42 × cheater_ quits (~Username@user/cheater) (Ping timeout: 255 seconds)
17:51:33 × GuestW48 quits (~GuestW48@46.146.247.46) (Quit: Client closed)
17:54:09 <segfaultfizzbuzz> as to why i am trying to chase general graph reduction, i think that i am interested in what would constitute a formal program specification language rather than implementation,... whenever i chase programming, all the materials i come across assume i care about implementation
17:54:16 <segfaultfizzbuzz> either in part or in entirety
17:54:20 × Square quits (~Square4@user/square) (Ping timeout: 252 seconds)
17:58:42 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
18:00:19 × acarrico quits (~acarrico@dhcp-68-142-49-163.greenmountainaccess.net) (Quit: Leaving.)
18:01:22 acarrico joins (~acarrico@dhcp-68-142-49-163.greenmountainaccess.net)
18:02:04 × teo quits (~teo@user/teo) (Ping timeout: 246 seconds)
18:05:03 wootehfoot joins (~wootehfoo@user/wootehfoot)
18:12:12 ubert joins (~Thunderbi@84.140.138.216)
18:13:16 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
18:17:40 oxide joins (~lambda@user/oxide)
18:19:00 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf)
18:20:45 × nschoe quits (~q@141.101.51.197) (Ping timeout: 255 seconds)
18:23:41 <sclv> formal specification that's not interested in implementation is _not_ given in terms of graph reduction.
18:23:43 dsrt^ joins (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net)
18:24:04 <sclv> its just the semantics of the typed lambda calculus under non-strict evaluation order
18:24:14 <sclv> graph reduction is just one way to model/implement that
18:24:59 <sclv> if you're looking at graph reduction you're necessarily looking at implementation
18:30:51 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Remote host closed the connection)
18:31:31 freeside joins (~mengwong@103.252.202.170)
18:33:30 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
18:35:12 × CiaoSen quits (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
18:36:30 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds)
18:37:08 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
18:39:09 econo joins (uid147250@user/econo)
18:40:09 sidy joins (~sidy@user/sidy)
18:41:46 × Charles quits (~Charles@host-23-251-65-156.VALOLT4.epbfi.com) (Quit: Client closed)
18:43:11 slack1256 joins (~slack1256@186.11.53.84)
18:43:43 × gastus quits (~gastus@5.83.191.28) (Ping timeout: 248 seconds)
18:44:22 gastus joins (~gastus@5.83.191.28)
18:47:33 × brettgilio quits (~brettgili@x-irc.gq) (Read error: Connection reset by peer)
18:49:48 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value)
18:50:59 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
18:51:12 elevenkb joins (~elevenkb@105.225.107.83)
18:53:19 × vgtw quits (~vgtw@user/vgtw) (Ping timeout: 248 seconds)
18:53:28 vgtw_ joins (~vgtw@user/vgtw)
18:57:51 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
18:58:42 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
18:59:43 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:00:07 mixfix41 joins (~sdenynine@user/mixfix41)
19:00:47 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds)
19:03:03 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
19:07:59 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 264 seconds)
19:10:53 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
19:12:12 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
19:12:12 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Write error: Connection reset by peer)
19:12:12 × califax quits (~califax@user/califx) (Write error: Connection reset by peer)
19:12:12 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Read error: Connection reset by peer)
19:12:31 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
19:12:51 L29Ah joins (~L29Ah@wikipedia/L29Ah)
19:13:02 azimut joins (~azimut@gateway/tor-sasl/azimut)
19:13:02 × elevenkb quits (~elevenkb@105.225.107.83) (Quit: Client closed)
19:13:16 gmg joins (~user@user/gehmehgeh)
19:13:57 stiell joins (~stiell@gateway/tor-sasl/stiell)
19:14:39 × oxide quits (~lambda@user/oxide) (Quit: oxide)
19:14:43 × ubert quits (~Thunderbi@84.140.138.216) (Remote host closed the connection)
19:15:11 califax joins (~califax@user/califx)
19:19:46 × polyphem_ quits (~rod@2a02:810d:840:8754:b293:2a07:4a12:170f) (Ping timeout: 246 seconds)
19:20:49 polyphem_ joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
19:33:45 elevenkb joins (~elevenkb@105.225.107.83)
19:38:36 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
19:41:23 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
19:41:25 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:41:40 azimut joins (~azimut@gateway/tor-sasl/azimut)
19:43:47 cidkid joins (~cidkid@98.97.12.238)
19:43:53 × cidkid quits (~cidkid@98.97.12.238) (Client Quit)
19:45:16 cidkidnix joins (~cidkidnix@98.97.12.238)
19:46:46 falafel joins (~falafel@2607:fb91:143f:e47f:35cb:dbbe:627:16bc)
19:50:31 × ec_ quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
19:52:58 jmdaemon joins (~jmdaemon@user/jmdaemon)
19:53:46 × elevenkb quits (~elevenkb@105.225.107.83) (Quit: Client closed)
19:56:26 ft joins (~ft@p3e9bc443.dip0.t-ipconnect.de)
19:57:21 × lyle quits (~lyle@104.246.145.237) (Quit: WeeChat 3.8)
19:59:03 elevenkb joins (~elevenkb@105.225.107.83)
19:59:15 <cidkidnix> Hey ya'll is there a way to force getting some package from something like https://ghc.gitlab.haskell.org/head.hackage/, instead of the main hackage repo? Ex if the versions were the same is there a (relatively) nice way to force it to use the one from the external repository?
20:00:15 <geekosaur> shouldn't it take it from the first repo listed in the config file that has it?
20:01:07 <cidkidnix> Ah I see, it should take the package from the first repo that's listed?
20:01:34 <geekosaur> that is certainly what I would expect
20:01:44 <geekosaur> so given its nature I'd list head.hackage first
20:10:20 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:6866:bb15:ee8d:e014) (Ping timeout: 260 seconds)
20:10:43 lortabac joins (~lortabac@2a01:e0a:541:b8f0:9c53:942a:1acd:fd47)
20:13:52 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf)
20:14:15 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:9c53:942a:1acd:fd47) (Client Quit)
20:16:19 × bjobjo quits (~bjobjo@user/bjobjo) (Quit: leaving)
20:16:44 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
20:23:20 bjobjo joins (~bjobjo@user/bjobjo)
20:24:53 mechap joins (~mechap@user/mechap)
20:25:17 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
20:25:24 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
20:25:53 NiceBird joins (~NiceBird@185.133.111.196)
20:35:25 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
20:36:57 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Remote host closed the connection)
20:37:29 × mastarija quits (~mastarija@188.252.197.148) (Quit: WeeChat 3.7.1)
20:37:48 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf)
20:39:28 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
20:46:00 × cassaundra quits (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) (Ping timeout: 268 seconds)
20:46:23 cassaundra joins (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net)
20:47:17 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:47:36 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
20:48:57 pavonia joins (~user@user/siracusa)
20:51:16 × elevenkb quits (~elevenkb@105.225.107.83) (Quit: Client closed)
20:52:15 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Remote host closed the connection)
20:54:12 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
20:55:50 × falafel quits (~falafel@2607:fb91:143f:e47f:35cb:dbbe:627:16bc) (Ping timeout: 260 seconds)
20:56:33 wootehfoot joins (~wootehfoo@user/wootehfoot)
20:59:09 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
21:00:34 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:01:13 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
21:02:55 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:04:19 <mauke> what's a good module for basic http requests?
21:05:39 <sm> http-conduit ? req ?
21:05:54 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
21:08:08 <mauke> http-conduit doesn't look great (FUD in the docs)
21:10:27 <slack1256> wreq too
21:12:44 <mauke> is there anything that doesn't build on http-client?
21:12:55 dcoutts__ joins (~duncan@host86-153-135-38.range86-153.btcentralplus.com)
21:13:11 ec joins (~ec@gateway/tor-sasl/ec)
21:13:18 × cidkidnix quits (~cidkidnix@98.97.12.238) (Quit: Client closed)
21:14:53 <romes[m]> Hi 👋 I’m trying to understand if the code in cabal-install to compute a package’s unit-id (hashedInstalledPackageId in Distribution.Client.PackageHash is too tied in to cabal-install or whether it could be feasibly moved to the Cabal package?
21:14:53 <romes[m]> * Hi 👋 I’m trying to understand if the code in cabal-install to compute a package’s unit-id (hashedInstalledPackageId in Distribution.Client.PackageHash) is too tied in to cabal-install or whether it could be feasibly moved to the Cabal package?
21:14:54 × kuribas quits (~user@ptr-17d51eohw70nwasehcd.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
21:15:16 <sclv> why
21:15:18 <romes[m]> * Hi 👋 I’m trying to understand if the code in cabal-install to compute a package’s unit-id (hashedInstalledPackageId in Distribution.Client.PackageHash) is too tied in to cabal-install or whether it could be feasibly moved to the Cabal package?
21:15:30 <sclv> why
21:15:35 × NiceBird quits (~NiceBird@185.133.111.196) (Quit: Leaving)
21:15:35 <[exa]> romes[m]: posting once is typically enough, peope will just take a moment to answer
21:15:37 <geekosaur> please don't do matrix edits, it's just sent yopur message 3 times
21:16:07 <romes[m]> Sorry, I forgot this channel was bridged
21:17:39 <geekosaur> in any case that question probably belongs in #hackage:libera.chat
21:18:05 <romes[m]> sclv: on my current work on plugin abi incompatibility, everything points to a solution that involves having ghc compute its own unit-id exactly as cabal would
21:19:11 <[exa]> romes[m]: does the source depend much on the commandline tool facilities?
21:19:50 elevenkb joins (~elevenkb@105.225.107.83)
21:20:45 <romes[m]> and this path ultimately also enables us to handle wired-in packages without the -this-unit-id package hack
21:20:50 <romes[m]> so, right now, seems like the elegant solution
21:21:14 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:22:06 × slack1256 quits (~slack1256@186.11.53.84) (Ping timeout: 255 seconds)
21:22:29 <romes[m]> [exa]: I’ve read through it but couldn’t reach good conclusions. Hence my reaching out here :)
21:23:45 <[exa]> like, I'd ask in #hackage and if no one really objects, just send a PR. :D
21:24:48 <romes[m]> I’ll ask there, thank you. I’d be happy to submit a PR, but i’m mostly probing for feasibility, there’s still a lot of code for that bit (particularly the arguments passed to that function)
21:28:56 × ddellacosta quits (~ddellacos@146.70.165.157) (Quit: WeeChat 3.8)
21:34:56 gawen_ joins (~gawen@user/gawen)
21:35:20 × gawen quits (~gawen@user/gawen) (Ping timeout: 268 seconds)
21:38:47 <sm> G'day all. A reminder that the first Haskell Tiny Game Jam has one more week to run. We have 41 entries so far, more welcome! https://github.com/haskell-game/tiny-games-hs
21:42:27 × elevenkb quits (~elevenkb@105.225.107.83) (Quit: Client closed)
21:46:23 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:47:21 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
21:47:34 coot joins (~coot@213.134.171.3)
21:47:43 <eldritchcookie[m> i am having a problem with ambiguous types, it probably is something really simple that i am missing.
21:47:54 <Rembane> eldritchcookie[m: Do you have an example?
21:48:03 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:48:51 <eldritchcookie[m> yeah
21:49:23 <eldritchcookie[m> connect::forall f t p es. (SocketE f t p :> es,S.Family f) => SocketAddress f -> Eff es ()
21:49:23 <eldritchcookie[m> connect addr = do
21:49:23 <eldritchcookie[m> (SocketERep sock ) <- getStaticRep @(SocketE f t p)
21:49:23 <eldritchcookie[m> unsafeEff_ $ S.connect sock addr
21:50:11 <eldritchcookie[m> this fails with Could not deduce (SocketE f t0 p0 :> es)... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/3c9798409ffcde5941862372182ef92501c37030>)
21:50:41 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:52:43 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf)
21:52:55 <mauke> is ScopedTypeVariables on?
21:53:01 <eldritchcookie[m> yes
21:53:41 <[Leary]> The issue isn't in `connect`, it's `connect` itself. It takes a `SocketAddress f` and produces an `Eff es ()`, so GHC can know about `f` and `es` from context. It can't infer `t` and `p`, however.
21:54:00 <[Leary]> If you want to use it with TypeApplications, enable AllowAmbiguousTypes.
21:55:58 <eldritchcookie[m> sorry doesn the getStaticRep @(SocketE f t p) line fix the t and p types?
21:56:27 <mauke> no, that's part of the function body, which is irrelevant (according to the ^ explanation)
21:57:40 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:57:47 <[Leary]> The problem is that you'd have to do `connect @_ @t @p` when you want to use the function. Haskell doesn't have TypeApplications by default, so GHC considers this erroneous.
21:58:00 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:c483:164:5daf) (Ping timeout: 255 seconds)
21:59:56 <eldritchcookie[m> ok why is it not complaining about the thing i wrote before ?... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/714bdc27262b982b3aad5c39962b0363008fb405>)
22:00:57 <[Leary]> The type variables all feature in the explicit argument.
22:01:02 <mauke> in that one all the type variables actually appear in the type
22:03:57 <eldritchcookie[m> ok just tell me if i turn on allow ambiguous types will anyone using specifically runSocket be able to get a compile time error due to ambigous types?
22:07:08 <[Leary]> It won't have any effect on `runSocket`, it just lets you write things like `connect`.
22:08:39 <eldritchcookie[m> can a user writing something using connect get a type error?
22:09:32 × trev quits (~trev@user/trev) (Remote host closed the connection)
22:09:59 <[Leary]> Any use without the explicit TypeApplications I showed above will be an error.
22:16:27 jao parts (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) ()
22:17:04 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:21:11 × michalz quits (~michalz@185.246.207.215) (Remote host closed the connection)
22:25:24 slack1256 joins (~slack1256@186.11.53.84)
22:30:06 × EvanR quits (~EvanR@user/evanr) (Remote host closed the connection)
22:31:32 darchitect joins (~darchitec@2a00:23c6:3584:df01:a0b8:952b:135:dbe4)
22:33:04 EvanR joins (~EvanR@user/evanr)
22:33:40 mcglk_ joins (~mcglk@131.191.19.145)
22:35:57 × mcglk quits (~mcglk@131.191.49.120) (Ping timeout: 252 seconds)
22:40:25 <eldritchcookie[m> ok i know what my mistake was i forgot to turn on the ghc plugin for the effect system so now it works fine, guess i will put a warning to use the plugin
22:42:25 <AWizzArd> What extension introduces the curly braces syntax for `forall`? Such as: p :: forall {k} (a :: k). Proxy a
22:43:59 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
22:46:20 kurbus joins (~kurbus@user/kurbus)
22:49:21 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
22:50:19 <geekosaur> no extension, unless maybe TypeApplications. but it's only available from 9.0.1 on
22:50:49 <AWizzArd> geekosaur: interesting, ic. Do you happen to know where this syntax is documented?
22:51:07 <geekosaur> https://downloads.haskell.org/ghc/9.6.1-alpha3/docs/users_guide/exts/type_applications.html#manually-defining-inferred-variables
22:51:19 <geekosaur> (9.6.1 only because that's what I have open)
22:52:00 <AWizzArd> geekosaur: excellent
22:52:12 × darchitect quits (~darchitec@2a00:23c6:3584:df01:a0b8:952b:135:dbe4) (Ping timeout: 246 seconds)
22:52:43 <AWizzArd> I stumbled upon p :: forall {k} (a :: k). Proxy a vs p :: forall k (a :: k). Proxy a
22:53:53 biberu joins (~biberu@user/biberu)
22:53:59 × kurbus quits (~kurbus@user/kurbus) (Quit: Client closed)
22:55:02 elevenkb joins (~elevenkb@105.225.107.83)
22:57:34 × dcoutts__ quits (~duncan@host86-153-135-38.range86-153.btcentralplus.com) (Ping timeout: 252 seconds)
23:01:36 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
23:03:58 dcoutts__ joins (~duncan@host86-153-135-38.range86-153.btcentralplus.com)
23:04:22 × dfg quits (~dfg@user/dfg) (Quit: I hate quit messages.)
23:06:30 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
23:09:37 Square2 joins (~Square4@user/square)
23:14:40 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
23:15:21 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
23:20:48 × coot quits (~coot@213.134.171.3) (Quit: coot)
23:20:55 × ph88 quits (~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
23:25:51 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
23:26:39 gpncarl_ joins (~gpncarl@210.12.195.2)
23:28:16 × gpncarl quits (~gpncarl@222.249.231.4) (Ping timeout: 246 seconds)
23:30:22 × Vajb quits (~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959) (Ping timeout: 246 seconds)
23:37:45 coot joins (~coot@213.134.171.3)
23:37:54 × coot quits (~coot@213.134.171.3) (Remote host closed the connection)
23:47:00 × biberu quits (~biberu@user/biberu) (Ping timeout: 255 seconds)
23:53:33 biberu joins (~biberu@user/biberu)
23:56:24 kadenwolff[m] joins (~kadenwolf@2001:470:69fc:105::1:d97f)

All times are in UTC on 2023-02-21.