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.