Logs on 2024-08-26 (liberachat/#haskell)
| 00:00:55 | × | acidjnk_new quits (~acidjnk@p200300d6e72cfb47bd23b15f512db0bf.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:05:07 | → | Guest75 joins (~Guest75@2600:387:f:a10::6) |
| 00:06:49 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:07:40 | × | Guest75 quits (~Guest75@2600:387:f:a10::6) (Client Quit) |
| 00:11:17 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 00:16:47 | × | tcard__ quits (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) (Quit: Leaving) |
| 00:22:15 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:26:36 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 00:26:45 | <EvanR> | chatgpt generates bindings for me lol |
| 00:27:25 | → | tcard joins (~tcard@p3940165-ipxg22501hodogaya.kanagawa.ocn.ne.jp) |
| 00:29:13 | × | bilegeek quits (~bilegeek@2600:1008:b007:52b2:99e1:c3bf:c468:921) (Quit: Leaving) |
| 00:32:59 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:34:09 | → | califax joins (~califax@user/califx) |
| 00:37:26 | → | machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 00:37:41 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:39:57 | → | Guest75 joins (~Guest75@2600:387:f:a10::6) |
| 00:40:53 | <probie> | My problem with LLMs is that you have to check their work, so you don't end up saving any time |
| 00:41:14 | → | bilegeek joins (~bilegeek@2600:1008:b007:52b2:99e1:c3bf:c468:921) |
| 00:41:57 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 00:45:58 | × | Guest75 quits (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
| 00:46:20 | → | Guest75 joins (~Guest75@2600:387:f:a10::6) |
| 00:46:30 | × | ZharMeny quits (~user@user/ZharMeny) (Quit: ()) |
| 00:50:03 | × | Guest75 quits (~Guest75@2600:387:f:a10::6) (Client Quit) |
| 00:53:07 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:56:53 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 00:58:22 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 00:58:55 | <EvanR> | I check pretty fast |
| 00:59:10 | <EvanR> | random language bindings would take me a while to write out |
| 01:08:33 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:09:45 | → | troojg joins (~troojg@user/troojg) |
| 01:12:49 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 01:14:12 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 272 seconds) |
| 01:23:56 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:27:39 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 01:28:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 01:30:57 | × | troojg quits (~troojg@user/troojg) (Ping timeout: 246 seconds) |
| 01:39:20 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:44:24 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 01:54:47 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:59:23 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 02:04:26 | × | Inst quits (~Inst@user/Inst) (Read error: Connection reset by peer) |
| 02:07:21 | × | stef204 quits (~stef204@user/stef204) (Quit: WeeChat 4.2.1) |
| 02:07:47 | × | td_ quits (~td@i53870916.versanet.de) (Ping timeout: 252 seconds) |
| 02:09:49 | → | td_ joins (~td@i53870916.versanet.de) |
| 02:10:13 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:14:45 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 02:14:53 | × | xff0x quits (~xff0x@2405:6580:b080:900:1a16:bbb0:6f59:723e) (Quit: xff0x) |
| 02:17:30 | → | son0p joins (~ff@2800:e2:f80:ee7::1) |
| 02:24:22 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:28:42 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 02:39:48 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:44:05 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 02:53:24 | × | bilegeek quits (~bilegeek@2600:1008:b007:52b2:99e1:c3bf:c468:921) (Quit: Leaving) |
| 02:55:12 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:59:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 03:03:41 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 03:05:27 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:08:17 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 03:10:38 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:10:44 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
| 03:15:48 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 03:17:49 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 03:20:52 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
| 03:22:23 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 03:22:50 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 03:26:03 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:28:12 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds) |
| 03:30:29 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 03:41:30 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:41:58 | → | aforemny joins (~aforemny@i59F516F8.versanet.de) |
| 03:43:40 | × | aforemny_ quits (~aforemny@2001:9e8:6ce1:ca00:1cd1:13ff:d54d:eb12) (Ping timeout: 272 seconds) |
| 03:46:03 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 03:56:56 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:00:24 | × | machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 246 seconds) |
| 04:01:20 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 04:06:43 | → | aljazmc joins (~aljazmc@user/aljazmc) |
| 04:12:20 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:16:53 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 04:21:23 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 04:25:22 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:30:32 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 04:40:47 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:45:27 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 04:46:36 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 04:53:17 | → | michalz joins (~michalz@185.246.207.193) |
| 04:56:13 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:57:22 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 05:01:19 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
| 05:01:56 | × | aljazmc quits (~aljazmc@user/aljazmc) (Quit: Leaving) |
| 05:08:52 | → | Square2 joins (~Square4@user/square) |
| 05:10:13 | → | dysthesis joins (~dysthesis@user/dysthesis) |
| 05:11:37 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:11:49 | → | gmg joins (~user@user/gehmehgeh) |
| 05:14:57 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 05:16:07 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 05:22:35 | × | jcarpenter2 quits (~lol@2603:3016:1e01:b9a0:dd46:b628:cfda:5fd9) (Read error: Connection reset by peer) |
| 05:26:22 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:28:19 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 05:30:11 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 05:30:33 | → | jcarpenter2 joins (~lol@2603:3016:1e01:b9a0:3dc1:ba12:10da:4091) |
| 05:30:55 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 05:33:14 | → | euphores joins (~SASL_euph@user/euphores) |
| 05:41:48 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:42:15 | × | mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection) |
| 05:43:37 | → | mceresa joins (~mceresa@user/mceresa) |
| 05:46:25 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 05:57:13 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:02:22 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 06:04:57 | × | jinsun quits (~jinsun@user/jinsun) (Ping timeout: 252 seconds) |
| 06:08:05 | × | ThePenguin7 quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection) |
| 06:08:39 | → | ThePenguin7 joins (~ThePengui@cust-95-80-24-166.csbnet.se) |
| 06:12:40 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:14:13 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 06:17:48 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 06:21:46 | → | oo_miguel joins (~Thunderbi@78.10.207.45) |
| 06:24:42 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 06:27:21 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:31:49 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 06:33:08 | × | mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection) |
| 06:33:55 | → | mceresa joins (~mceresa@user/mceresa) |
| 06:42:49 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:47:13 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 06:51:23 | × | ft quits (~ft@p4fc2a393.dip0.t-ipconnect.de) (Quit: leaving) |
| 06:58:13 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 07:03:10 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 07:12:16 | → | hendi joins (~hendi@193.32.248.133) |
| 07:13:50 | → | acidjnk_new joins (~acidjnk@p200300d6e72cfb41fdef54b6136c7789.dip0.t-ipconnect.de) |
| 07:16:02 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out) |
| 07:22:30 | × | hendi quits (~hendi@193.32.248.133) (Ping timeout: 252 seconds) |
| 07:35:50 | → | terrorjack4 joins (~terrorjac@2a01:4f8:121:32e8::) |
| 07:44:59 | → | sourcetarius joins (~sourcetar@user/sourcetarius) |
| 07:56:36 | → | machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 07:59:21 | → | merijn joins (~merijn@77.242.116.146) |
| 08:01:40 | → | alexherbo2 joins (~alexherbo@2a02-8440-3109-4750-dded-439d-72c1-d801.rev.sfr.net) |
| 08:10:26 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:10:41 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 08:12:24 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 08:13:24 | → | merijn joins (~merijn@77.242.116.146) |
| 08:21:06 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:22:58 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 272 seconds) |
| 08:23:53 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 08:24:49 | × | Me-me quits (~me-me@kc.randomserver.name) (Changing host) |
| 08:24:49 | → | Me-me joins (~me-me@user/me-me) |
| 08:29:07 | × | nckx quits (nckx@libera/staff/owl/nckx) (Ping timeout: 608 seconds) |
| 08:31:35 | → | merijn joins (~merijn@77.242.116.146) |
| 08:32:09 | × | Leary quits (~Leary@user/Leary/x-0910699) (Remote host closed the connection) |
| 08:32:24 | → | Leary joins (~Leary@user/Leary/x-0910699) |
| 08:37:01 | → | srazkvt joins (~sarah_@2a01:e0a:483:6900:b6d5:d9cd:2f20:2e49) |
| 08:52:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:01:59 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 09:08:33 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Quit: WeeChat 4.3.6) |
| 09:14:31 | × | dysthesis quits (~dysthesis@user/dysthesis) (Ping timeout: 260 seconds) |
| 09:19:12 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:19:47 | → | ss4 joins (~wootehfoo@user/wootehfoot) |
| 09:22:38 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 255 seconds) |
| 09:22:50 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 09:25:30 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 09:25:36 | × | ss4 quits (~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds) |
| 09:25:54 | → | ss4 joins (~wootehfoo@user/wootehfoot) |
| 09:28:29 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 255 seconds) |
| 09:29:21 | → | __monty__ joins (~toonn@user/toonn) |
| 10:03:27 | → | murgeljm joins (~murgeljm@APN-122-12-44-gprs.simobil.net) |
| 10:07:38 | × | srazkvt quits (~sarah_@2a01:e0a:483:6900:b6d5:d9cd:2f20:2e49) (Quit: Leaving) |
| 10:12:34 | × | murgeljm quits (~murgeljm@APN-122-12-44-gprs.simobil.net) (Read error: Connection reset by peer) |
| 10:14:20 | → | cpressey joins (~weechat@176.254.71.203) |
| 10:17:33 | × | connrs quits (~connrs@user/connrs) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:17:40 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 10:19:36 | → | CiaoSen joins (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) |
| 10:21:19 | → | connrs joins (~connrs@user/connrs) |
| 10:21:25 | × | connrs quits (~connrs@user/connrs) (Remote host closed the connection) |
| 10:27:30 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 248 seconds) |
| 10:29:01 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds) |
| 10:29:39 | → | merijn joins (~merijn@77.242.116.146) |
| 10:35:12 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 10:37:10 | → | connrs joins (~connrs@user/connrs) |
| 10:41:44 | → | cpressey joins (~weechat@176.254.71.203) |
| 10:44:15 | → | Guest75 joins (~Guest75@2600:387:f:a10::6) |
| 10:46:17 | → | merijn joins (~merijn@77.242.116.146) |
| 10:50:31 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 10:50:55 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
| 10:52:09 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 260 seconds) |
| 10:52:33 | × | m1dnight quits (~christoph@78-20-63-126.access.telenet.be) (Ping timeout: 248 seconds) |
| 10:53:35 | → | merijn joins (~merijn@77.242.116.146) |
| 11:00:41 | × | Guest75 quits (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
| 11:02:00 | → | Guest75 joins (~Guest75@2600:387:f:a10::6) |
| 11:14:29 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:19:45 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 11:21:07 | × | petrichor quits (~znc-user@user/petrichor) (Ping timeout: 265 seconds) |
| 11:21:43 | → | rosco joins (~rosco@175.136.158.234) |
| 11:24:21 | → | cpressey joins (~weechat@176.254.71.203) |
| 11:30:33 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:36:59 | → | m1dnight joins (~christoph@78-20-63-126.access.telenet.be) |
| 11:38:25 | × | Guest75 quits (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
| 11:39:31 | → | petrichor joins (~znc-user@user/petrichor) |
| 11:44:50 | <mauke> | :t let frob (w, b) j ls = go j ls where { go z ((p, f) : xs) | p > w = go (f z) xs; go z xs = (w, b z) : xs } in frob |
| 11:44:51 | <lambdabot> | Ord a => (a, t -> t -> t) -> t -> [(a, t -> t)] -> [(a, t -> t)] |
| 11:44:55 | <mauke> | is this a fold? |
| 11:45:46 | × | son0p quits (~ff@2800:e2:f80:ee7::1) (Quit: Leaving) |
| 11:53:52 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 272 seconds) |
| 11:59:13 | × | sourcetarius quits (~sourcetar@user/sourcetarius) (Ping timeout: 248 seconds) |
| 12:03:12 | → | merijn joins (~merijn@77.242.116.146) |
| 12:04:44 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 252 seconds) |
| 12:16:42 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 265 seconds) |
| 12:18:53 | → | merijn joins (~merijn@77.242.116.146) |
| 12:21:05 | × | ThePenguin7 quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection) |
| 12:21:06 | <Axman6> | I'm having massive deja vu, I swear you've asked this exact question before |
| 12:21:37 | → | ThePenguin7 joins (~ThePengui@cust-95-80-24-166.csbnet.se) |
| 12:22:51 | <mauke> | that would be scary because it would mean I've completely forgotten the time I ported an obscure parsing algorithm from C to Haskell, gaining a deeper understanding |
| 12:24:00 | <Axman6> | like when you run into a problem for the first time, search for the answer, and the links are purple |
| 12:28:02 | × | ddellacosta quits (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 255 seconds) |
| 12:29:17 | <mauke> | anyway, this function emulates what in C would be traversing down the right spine of a binary tree and modifying it in place |
| 12:29:57 | <mauke> | only in Haskell the tree is represented as a list of functions in reverse (bottom-up) |
| 12:31:19 | <Rembane> | Is it some kind of continuation passing style? |
| 12:31:55 | <mauke> | no, just layers of tree with "holes" where modifications can happen |
| 12:32:06 | <mauke> | hence the functions |
| 12:32:42 | <mauke> | I suspect the whole thing is just a special case of a well-known general parsing algorithm |
| 12:32:57 | <Rembane> | Got it! |
| 12:33:10 | <Rembane> | That sounds reasonable. Just gotta turn it inside out a couple of times more... |
| 12:34:10 | <mauke> | the basic idea is that when you have a complete expression tree and the next input symbol is a binary infix operator, it needs to be inserted in the tree at the right location |
| 12:34:42 | <mauke> | the right location is somewhere along the rightmost branch. the exact height depends on the precedence/weight of the operator |
| 12:35:32 | → | cpressey joins (~weechat@176.254.71.203) |
| 12:49:02 | <Rembane> | That feels super elegant |
| 12:50:14 | × | CiaoSen quits (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) (Ping timeout: 272 seconds) |
| 12:56:03 | × | rosco quits (~rosco@175.136.158.234) (Read error: Connection reset by peer) |
| 12:57:35 | → | Inst joins (~Inst@user/Inst) |
| 13:00:12 | → | rosco joins (rosco@gateway/vpn/airvpn/rosco) |
| 13:01:35 | → | ZharMeny joins (~user@user/ZharMeny) |
| 13:04:09 | × | rosco quits (rosco@gateway/vpn/airvpn/rosco) (Client Quit) |
| 13:10:38 | → | murgeljm joins (~murgeljm@APN-122-12-44-gprs.simobil.net) |
| 13:11:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:13:06 | → | misterfish joins (~misterfis@84.53.85.146) |
| 13:18:20 | → | cfricke_ joins (~cfricke@user/cfricke) |
| 13:19:44 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 260 seconds) |
| 13:20:45 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds) |
| 13:21:45 | × | alexherbo2 quits (~alexherbo@2a02-8440-3109-4750-dded-439d-72c1-d801.rev.sfr.net) (Remote host closed the connection) |
| 13:25:38 | → | spew joins (~spew@201.141.102.132) |
| 13:32:53 | × | spew quits (~spew@201.141.102.132) (Quit: spew) |
| 13:36:11 | → | cpressey joins (~weechat@176.254.71.203) |
| 13:37:03 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 245 seconds) |
| 13:38:15 | → | CiaoSen joins (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) |
| 13:40:29 | → | nckx joins (nckx@libera/staff/owl/nckx) |
| 13:44:40 | → | son0p joins (~ff@2800:e6:4001:8da7:232f:489b:caf3:dc20) |
| 13:47:31 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 264 seconds) |
| 13:49:14 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 252 seconds) |
| 13:50:29 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 260 seconds) |
| 14:04:09 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 14:05:20 | → | __monty__ joins (~toonn@user/toonn) |
| 14:10:52 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 14:11:51 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 246 seconds) |
| 14:20:25 | → | kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
| 14:23:10 | → | Guest75 joins (~Guest75@2600:387:f:a10::6) |
| 14:23:17 | × | euphores quits (~SASL_euph@user/euphores) (Ping timeout: 248 seconds) |
| 14:25:56 | × | ZharMeny quits (~user@user/ZharMeny) (Ping timeout: 255 seconds) |
| 14:26:06 | → | Guest|64 joins (~Guest|64@173.38.117.73) |
| 14:31:04 | → | euphores joins (~SASL_euph@user/euphores) |
| 14:31:23 | × | Guest|64 quits (~Guest|64@173.38.117.73) (Quit: Connection closed) |
| 14:31:48 | → | Guest|64 joins (~Guest|64@45-26-3-91.lightspeed.rlghnc.sbcglobal.net) |
| 14:33:57 | × | kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
| 14:37:18 | × | Guest|64 quits (~Guest|64@45-26-3-91.lightspeed.rlghnc.sbcglobal.net) (Quit: Connection closed) |
| 14:38:00 | → | smalltalkman joins (uid545680@id-545680.hampstead.irccloud.com) |
| 14:39:55 | → | ddellacosta joins (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
| 14:45:48 | → | ZharMeny joins (~user@user/ZharMeny) |
| 14:47:58 | × | murgeljm quits (~murgeljm@APN-122-12-44-gprs.simobil.net) (Quit: murgeljm) |
| 14:48:04 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 14:50:06 | × | cfricke_ quits (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2) |
| 14:54:43 | → | billchenchina- joins (~billchenc@103.152.35.21) |
| 14:59:55 | → | youthlic1 joins (~Thunderbi@user/youthlic) |
| 15:01:02 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
| 15:01:15 | × | youthlic quits (~Thunderbi@user/youthlic) (Ping timeout: 260 seconds) |
| 15:01:15 | youthlic1 | is now known as youthlic |
| 15:05:51 | → | kuribas joins (~user@ptr-17d51enukyvq8hfwj1t.18120a2.ip6.access.telenet.be) |
| 15:07:51 | → | alexherbo2 joins (~alexherbo@2a02-8440-3109-4750-1ded-dcf2-0d59-d526.rev.sfr.net) |
| 15:10:47 | × | Guest75 quits (~Guest75@2600:387:f:a10::6) (Ping timeout: 256 seconds) |
| 15:11:56 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 15:12:56 | → | spew joins (~spew@201.141.102.132) |
| 15:19:51 | × | machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Read error: Connection reset by peer) |
| 15:19:54 | → | machined1od joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 15:23:13 | → | troydm joins (~troydm@user/troydm) |
| 15:34:05 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:41:00 | × | youthlic quits (~Thunderbi@user/youthlic) (Remote host closed the connection) |
| 15:41:19 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 15:42:02 | → | ystael joins (~ystael@user/ystael) |
| 15:45:24 | → | jinsun joins (~jinsun@user/jinsun) |
| 15:46:49 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
| 15:47:51 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 276 seconds) |
| 15:49:04 | × | CiaoSen quits (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds) |
| 15:52:13 | <tomsmeding> | it also feels like it has quadratic complexity in the worst case :p |
| 15:52:47 | × | ZharMeny quits (~user@user/ZharMeny) (Ping timeout: 252 seconds) |
| 15:56:39 | × | mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection) |
| 15:57:43 | → | mceresa joins (~mceresa@user/mceresa) |
| 16:01:37 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 16:02:32 | × | alexherbo2 quits (~alexherbo@2a02-8440-3109-4750-1ded-dcf2-0d59-d526.rev.sfr.net) (Remote host closed the connection) |
| 16:03:00 | → | alexherbo2 joins (~alexherbo@2a02-8440-3109-4750-e0d9-8199-91b0-5b4f.rev.sfr.net) |
| 16:05:57 | <haskellbridge> | <maralorn> Can someone tell me what the type of CTime is in ghcjs? |
| 16:06:31 | × | alexherbo2 quits (~alexherbo@2a02-8440-3109-4750-e0d9-8199-91b0-5b4f.rev.sfr.net) (Remote host closed the connection) |
| 16:06:46 | × | kuribas quits (~user@ptr-17d51enukyvq8hfwj1t.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 16:07:17 | <haskellbridge> | <maralorn> I got to: https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/ghc-internal/src/GHC/Internal/Foreign/C/Types.hs#L197 |
| 16:07:35 | tomsmeding | . o O ( give ghcjs `() :: CTime` and look at the error message ) |
| 16:07:42 | <haskellbridge> | <maralorn> which says: "ARITHMETIC_TYPE(CTime,"time_t",HTYPE_TIME_T)" |
| 16:07:49 | × | ddellacosta quits (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 248 seconds) |
| 16:08:16 | <haskellbridge> | <maralorn> Ah, well. Its a newtype. But yeah, I can try something like that. |
| 16:08:20 | <tomsmeding> | maralorn https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/ghc-internal/include/CTypes.h#L23-24 |
| 16:10:04 | <haskellbridge> | <maralorn> Yeah, but how is HTYPE_TIME_T defined?^^ |
| 16:10:14 | → | ddellacosta joins (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
| 16:10:15 | <haskellbridge> | <maralorn> Seems to be automatically generated. |
| 16:10:23 | <haskellbridge> | <maralorn> But I will figure out soon enough with your idea. |
| 16:12:35 | × | machined1od quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 255 seconds) |
| 16:17:14 | <tomsmeding> | maralorn: _build/stage1/libraries/ghc-internal/build/config.status |
| 16:17:16 | → | comerijn joins (~merijn@77.242.116.146) |
| 16:17:19 | <tomsmeding> | D["HTYPE_TIME_T"]=" Int64" |
| 16:17:23 | × | youthlic quits (~Thunderbi@user/youthlic) (Quit: youthlic) |
| 16:17:26 | <tomsmeding> | but that may be system-dependent |
| 16:20:02 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
| 16:21:00 | <haskellbridge> | <maralorn> It is. In ghcjs it seems to be Int32 |
| 16:21:47 | <haskellbridge> | <maralorn> Which is unfortunate because it means that getTimeZone crashes for dates auf January 2038 in ghcjs. 😄 |
| 16:21:56 | <haskellbridge> | <maralorn> * after |
| 16:21:58 | <tomsmeding> | ... oops :D |
| 16:22:19 | × | comerijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 16:23:29 | × | ddellacosta quits (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 260 seconds) |
| 16:25:33 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 16:26:11 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds) |
| 16:26:46 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds) |
| 16:28:35 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 16:29:27 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 16:31:29 | → | ddellacosta joins (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
| 16:33:18 | → | pavonia joins (~user@user/siracusa) |
| 16:34:43 | <haskellbridge> | <maralorn> Might someone be able to enlighten me where I can find how ghcjs replaces |
| 16:34:43 | <haskellbridge> | "foreign import ccall unsafe "HsTime.h get_current_timezone_seconds"" with something that works in javascript? |
| 16:40:02 | × | billchenchina- quits (~billchenc@103.152.35.21) (Quit: Leaving) |
| 16:44:06 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 246 seconds) |
| 16:50:48 | <EvanR> | Int64 seems tricky to just have in javascript |
| 16:50:54 | × | jinsun quits (~jinsun@user/jinsun) (Ping timeout: 276 seconds) |
| 16:54:24 | × | Inst quits (~Inst@user/Inst) (Ping timeout: 252 seconds) |
| 16:54:56 | → | ft joins (~ft@p4fc2a393.dip0.t-ipconnect.de) |
| 16:55:53 | → | jinsun joins (~jinsun@user/jinsun) |
| 16:57:19 | <mauke> | tomsmeding: funnily enough I think this part might actually be linear |
| 16:57:52 | <mauke> | I never fold over the same nodes twice. any subtree folded over becomes a left child and is not re-traversed |
| 17:04:40 | → | infinity0 joins (~infinity0@pwned.gg) |
| 17:07:13 | <haskellbridge> | <thirdofmay18081814goya> if "e" is an expression without WHNF and "[[-]]" is the semantics/evalution function, "[[e]] = ⊥" right? |
| 17:07:42 | × | jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
| 17:08:45 | <tomsmeding> | mauke: ah, I didn't catch that part :) |
| 17:09:42 | <tomsmeding> | maralorn: compile four JS files: one without the import, one with the import, one with the import with one use of the function, and one with the import and 2 uses of the function |
| 17:10:15 | <tomsmeding> | hopefully file 1 and file 2 will be distinct, giving you your answer; if not, look at (3 - 1) - (4 - 3) |
| 17:10:56 | <tomsmeding> | (-) being subtraction/difference :p |
| 17:25:27 | → | Inst joins (~Inst@user/Inst) |
| 17:29:43 | → | jinsun joins (~jinsun@user/jinsun) |
| 17:35:25 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:38:07 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 265 seconds) |
| 17:38:07 | × | c_wraith quits (~c_wraith@adjoint.us) (Ping timeout: 265 seconds) |
| 17:38:18 | → | c_wraith joins (~c_wraith@adjoint.us) |
| 17:38:23 | → | dibblego joins (~dibblego@116-255-1-119.ip4.superloop.au) |
| 17:38:23 | × | dibblego quits (~dibblego@116-255-1-119.ip4.superloop.au) (Changing host) |
| 17:38:23 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 17:40:09 | → | Square joins (~Square@user/square) |
| 17:42:35 | × | Square2 quits (~Square4@user/square) (Ping timeout: 255 seconds) |
| 17:42:55 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:44:39 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 17:48:01 | <tomsmeding> | EvanR: JS has BigInt now though ;) |
| 17:56:54 | × | Square quits (~Square@user/square) (Remote host closed the connection) |
| 17:57:11 | → | Square joins (~Square@user/square) |
| 17:58:07 | × | Square quits (~Square@user/square) (Remote host closed the connection) |
| 17:58:24 | → | Square joins (~Square@user/square) |
| 17:59:29 | × | mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection) |
| 18:00:05 | → | mceresa joins (~mceresa@user/mceresa) |
| 18:00:35 | × | mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection) |
| 18:01:08 | × | son0p quits (~ff@2800:e6:4001:8da7:232f:489b:caf3:dc20) (Quit: Leaving) |
| 18:01:47 | × | spew quits (~spew@201.141.102.132) (Quit: spew) |
| 18:02:43 | → | mceresa joins (~mceresa@user/mceresa) |
| 18:08:12 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 18:10:47 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 18:12:36 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 252 seconds) |
| 18:13:53 | → | spew joins (~spew@201.141.102.132) |
| 18:21:28 | → | Guest50 joins (~Guest50@109-252-8-98.nat.spd-mgts.ru) |
| 18:22:04 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 18:22:36 | × | Guest50 quits (~Guest50@109-252-8-98.nat.spd-mgts.ru) (Client Quit) |
| 18:29:58 | → | misterfish joins (~misterfis@84.53.85.146) |
| 18:35:19 | × | Inst quits (~Inst@user/Inst) (Ping timeout: 260 seconds) |
| 18:36:34 | → | bilegeek joins (~bilegeek@2600:1008:b017:c901:621d:4241:2804:e5ab) |
| 18:36:52 | → | cpressey joins (~weechat@176.254.71.203) |
| 18:36:53 | <haskellbridge> | <thirdofmay18081814goya> uh, a somewhat more accurate statement: if no reduction of "e" produces a WHNF, then evaluation of "e" is non-terminating, so "[[e]] = ⊥" |
| 18:38:21 | <monochrom> | I agree. |
| 18:38:40 | → | rvalue- joins (~rvalue@user/rvalue) |
| 18:38:50 | <haskellbridge> | <thirdofmay18081814goya> nice ty! |
| 18:39:50 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 272 seconds) |
| 18:40:05 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 18:40:45 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 276 seconds) |
| 18:41:35 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 18:41:59 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds) |
| 18:43:33 | × | Square quits (~Square@user/square) (Ping timeout: 248 seconds) |
| 18:43:51 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds) |
| 18:46:35 | rvalue- | is now known as rvalue |
| 18:48:47 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:50:07 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 18:50:31 | <haskellbridge> | <thirdofmay18081814goya> hm, we"d want to distinguish non-terminating expressions that overflow vs. expressions like "[1..]` |
| 18:50:40 | <haskellbridge> | <thirdofmay18081814goya> * we'd want to distinguish non-terminating expressions that overflow vs. expressions like "\[1..\]\" |
| 18:50:49 | <haskellbridge> | <thirdofmay18081814goya> * "[1..\]" |
| 18:50:54 | <haskellbridge> | <thirdofmay18081814goya> hm, we'd want to distinguish non-terminating expressions that overflow vs. expressions like "[1..]" |
| 18:53:28 | <tomsmeding> | mauke: disclaimer, I've spent all of 10 seconds thinking about it, but perhaps Dijkstra's Shunting Yard algorithm is similar? |
| 18:53:42 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 18:55:39 | → | neuroevolutus joins (~neuroevol@37.19.200.148) |
| 18:57:13 | <EvanR> | we do distinguish ⊥ from [1..] |
| 18:57:26 | <EvanR> | they are different |
| 18:57:51 | <haskellbridge> | <thirdofmay18081814goya> EvanR: what's a decent formal statement for this fact? |
| 18:58:06 | <EvanR> | well, what is [[undefined]] and what is [[ [1..] ] |
| 18:58:41 | <tomsmeding> | do you want to describe call-by-value or call-by-need? |
| 18:58:46 | <EvanR> | this might be a reason why the jargon "non-terminate" is maybe bad |
| 18:58:52 | <EvanR> | "non-terminating" |
| 18:59:15 | <haskellbridge> | <thirdofmay18081814goya> tomsmeding: call by need, so that "[1..]" make sense |
| 18:59:23 | <haskellbridge> | <thirdofmay18081814goya> EvanR: hm right |
| 18:59:26 | <EvanR> | ⊥ is the least defined semantic value |
| 18:59:55 | <EvanR> | it's used to represent the meaning of non-terminating computations, and other things |
| 19:00:02 | <EvanR> | meanwhile [1..] isn't non-terminating in that way |
| 19:00:21 | <EvanR> | another way to describe [1..] is productive |
| 19:00:22 | <tomsmeding> | surely, we have [[undefined]] = ⊥, [[1 : undefined]] = 1 : ⊥, [[1 : 2 : undefined]] = 1 : 2 : ⊥ |
| 19:00:46 | <tomsmeding> | so then what is [[ [1..] ]]? Dunno, looks like this notation does not scale well enough |
| 19:01:01 | <EvanR> | it is 1 : 2 : ... |
| 19:01:21 | <EvanR> | 1 : 2 : 3 : [[ [4..] ]] |
| 19:01:22 | <tomsmeding> | no, that is 1 : 2 : 4 : 8 : 16 : ... |
| 19:01:57 | <tomsmeding> | the question, what is the type of [[_]] |
| 19:02:04 | <tomsmeding> | Expression -> ? |
| 19:02:05 | <EvanR> | no, it's not xD |
| 19:02:34 | <EvanR> | syntax -> semantics |
| 19:02:49 | <tomsmeding> | EvanR: any finite-length sequence of N numbers followed by "..." can mean anything you want, just fit an N-degree polynomial to it :p |
| 19:03:03 | <EvanR> | well I clarified to something that doesn't use ... |
| 19:03:08 | <tomsmeding> | what is the precise semantical domain, was my question ;) |
| 19:03:12 | <tomsmeding> | yes I was joking |
| 19:03:35 | <haskellbridge> | <thirdofmay18081814goya> tomsmeding: do we absolutely need one |
| 19:03:39 | <haskellbridge> | <thirdofmay18081814goya> can't we reason by rewriting? |
| 19:03:40 | <EvanR> | you see authors say that the semantic 1 2 3 etc are "the numbers 1 2 and 3" |
| 19:04:00 | <tomsmeding> | EvanR: your equality ([[1 : l]] = 1 : [[l]]) looks nice, but that looks awfully like the semantical domain is "Haskell", which is circular :p |
| 19:04:18 | <haskellbridge> | <thirdofmay18081814goya> like i'm trying to avoid domain theory |
| 19:04:22 | <EvanR> | it looks that way doesn't it |
| 19:04:26 | <tomsmeding> | we can definitely reason by rewriting, and then this [[1 : l]] = 1 : [[l]] equality is fine |
| 19:04:27 | <EvanR> | but it's not haskell |
| 19:04:38 | <monochrom> | You cannnot avoid domain theory for infinite lists. |
| 19:04:58 | <monochrom> | or at least, for Haskell infinite lists. |
| 19:05:16 | <tomsmeding> | but if you reason by rewriting, you've defined small-step operational semantics, which is not at all the same as denotational semantics, which is I think what you were originally looking for |
| 19:06:15 | <EvanR> | syntax -> syntax as a semantics doesn't work in haskell because, for one thing infinite stuff |
| 19:07:13 | <EvanR> | and the program that freezes up and produces nothing doesn't have a form |
| 19:07:23 | <EvanR> | you rewrite to empty string? ... no |
| 19:08:49 | <monochrom> | syntax -> syntax as a semantics is OK. It is just operational or equational or axiomatic instead of denotational. |
| 19:09:09 | <EvanR> | it's often the case that haskell is easy to reason about when you pretend ⊥ doesn't happen. But if ⊥ happens it gets more complicated |
| 19:09:56 | <haskellbridge> | <thirdofmay18081814goya> hm, what sort of operational semantics could distinguish between "[1..]" and "fix \x -> x + 0"? |
| 19:10:15 | <EvanR> | that's easy |
| 19:10:28 | <EvanR> | try to evaluate either to WHNF |
| 19:10:56 | <EvanR> | the results are distinguishable |
| 19:11:05 | <EvanR> | by a competent jury |
| 19:11:23 | <tomsmeding> | operational semantics only describes the next step in evaluation; it doesn't go all the way to the end |
| 19:11:38 | <monochrom> | [1..] is simply enumFrom 1 (as a thunk) |
| 19:12:17 | <EvanR> | if the next step is WHNF, they behave different on the first step |
| 19:12:25 | <monochrom> | If you WHNF it, it's probably something like 0 : enumFrom (0+1), fullstop. |
| 19:13:05 | <haskellbridge> | <thirdofmay18081814goya> hm I see |
| 19:13:07 | <monochrom> | whereas fix \x -> x + 0 won't have a WHNF |
| 19:14:18 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 19:15:07 | <monochrom> | err, 1 : enumFrom (1+1). Why doesn't everyone start from 0? |
| 19:15:25 | <tomsmeding> | to keep you on your toes :) |
| 19:15:30 | <tomsmeding> | ever programmed APL? |
| 19:15:35 | <monochrom> | I can understand why people in real analysis starting from 1. |
| 19:15:37 | <EvanR> | because 1 is first duh |
| 19:15:43 | <EvanR> | 0 is zeroth |
| 19:15:43 | <monochrom> | 0st. |
| 19:16:42 | <tomsmeding> | ( https://aplwiki.com/wiki/Index_origin ) |
| 19:17:45 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
| 19:18:13 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 19:20:28 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 19:22:08 | → | img joins (~img@user/img) |
| 19:22:58 | → | machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 19:23:58 | <probie> | I think most modern APL uses `⎕IO←0`. Without it, you can't index an array with a boolean, which is inconvenient |
| 19:24:58 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:26:50 | <haskellbridge> | <thirdofmay18081814goya> hm yeah, no satisfactory way to reason about "[1..]" vs "fix \x -> x + 0" without more theory. or limited to operational semantics we might say something like, "[1..]" has intermediary WHNF forms |
| 19:27:31 | <tomsmeding> | I think what monochrom was getting at, is that perhaps [[_]] should only evaluate to WHNF |
| 19:28:39 | <haskellbridge> | <thirdofmay18081814goya> oh, and the non-terminating behaviour of "ghci> [1..]" would be something due to the Show derivation |
| 19:28:44 | <tomsmeding> | then the codomain of [[_]] would be "values with thunks", "values" being finite combinations of data constructors |
| 19:28:47 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 255 seconds) |
| 19:29:01 | <tomsmeding> | [[ [1..] ]] = [[1]] : [[ [2..] ]] |
| 19:29:41 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 19:29:47 | <tomsmeding> | perhaps less ambiguously written: [[ [1..] ]] = Thunk{1} : Thunk{[2..]}, where `Thunk{E}` is a thunk resulting from not evaluating expression E |
| 19:30:25 | <tomsmeding> | [[ undefined ]] = ⊥ |
| 19:30:42 | <haskellbridge> | <thirdofmay18081814goya> hm I see |
| 19:30:49 | <tomsmeding> | but [[ [undefined] ]] = Thunk{undefined} : [] |
| 19:31:05 | <tomsmeding> | (perhaps that [] should be in a Thunk{}; not sure) |
| 19:31:46 | <tomsmeding> | I feel like one could make this formal |
| 19:32:44 | <dolio> | Describing printing 'useful' output forever as 'non-terminating' is crude, if the latter is also what is used to describe a non-productive loop. |
| 19:33:16 | <tomsmeding> | (and indeed, with this WHNF definition of [[_]], [1..] terminates!) |
| 19:34:37 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
| 19:34:58 | <haskellbridge> | <thirdofmay18081814goya> tomsmeding: yeah I think that works, what was skewing my interpretation was that "ghci> [1..]" evaluates all thunks in "[1..]" |
| 19:35:14 | <tomsmeding> | that's because it tries to evaluate `show [1..]` to NF |
| 19:35:15 | <haskellbridge> | <thirdofmay18081814goya> dolio: yeah that's what I was trying to fix |
| 19:35:59 | <haskellbridge> | <thirdofmay18081814goya> right, and "show" is strict |
| 19:36:18 | <dolio> | No, it isn't. |
| 19:36:24 | <tomsmeding> | note that I wrote "NF", not "WHNF" |
| 19:36:45 | <tomsmeding> | `show` on [Int] happens to be strict, though |
| 19:37:24 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 19:38:03 | <dolio> | > show (undefined :: [Int]) |
| 19:38:04 | <lambdabot> | "*Exception: Prelude.undefined |
| 19:39:19 | → | michalz_ joins (~michalz@185.246.207.222) |
| 19:40:24 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:41:16 | × | michalz quits (~michalz@185.246.207.193) (Ping timeout: 272 seconds) |
| 19:42:28 | <dolio> | I don't think show is strict on any type. |
| 19:42:46 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 19:43:36 | <tomsmeding> | > show (undefined :: [Int]) `seq` () |
| 19:43:38 | <lambdabot> | *Exception: Prelude.undefined |
| 19:43:38 | <haskellbridge> | <thirdofmay18081814goya> dolio: don't we have "show undefined" throwing an error on any type for "undefined"? |
| 19:43:54 | <tomsmeding> | dolio: what do you mean precisely? It seems strict to me |
| 19:44:18 | <tomsmeding> | `show` is not strict if the Show instance for the type in question does not define a strict `show` :p |
| 19:44:22 | → | gmg joins (~user@user/gehmehgeh) |
| 19:44:26 | <tomsmeding> | instance Show MyFoolishType where show _ = "foolish" |
| 19:44:59 | <dolio> | Oh, I guess it's the extra layer of show that's non-strict. |
| 19:45:14 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 19:45:18 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 19:45:25 | <tomsmeding> | you mean the `"` being printed? |
| 19:45:32 | <tomsmeding> | yeah that's `show . show` not being strict :p |
| 19:45:38 | <dolio> | Yeah. That's String show. I was confusing myself. |
| 19:45:47 | × | michalz_ quits (~michalz@185.246.207.222) (Remote host closed the connection) |
| 19:46:16 | <EvanR> | > show (undefined :: [Char]) |
| 19:46:17 | <lambdabot> | "\"*Exception: Prelude.undefined |
| 19:47:12 | <dolio> | Anyhow, show being strict for various types is not relevant to the infintie list example. |
| 19:48:15 | <haskellbridge> | <thirdofmay18081814goya> maybe non-terminating is still useful here? since "[1..]" is terminating when not evaluated strictly? |
| 19:48:37 | → | michalz joins (~michalz@185.246.207.205) |
| 19:48:45 | <dolio> | [1..] is well-defined, so being strict in it is fine. |
| 19:48:47 | <EvanR> | you're just conflating at least two different senses of "non-terminating" |
| 19:48:58 | <EvanR> | just admit that it means different things |
| 19:49:00 | <dolio> | > [1..] `seq` () |
| 19:49:01 | <tomsmeding> | [1..] does not have a normal form, but it does have a weak-head normal form |
| 19:49:01 | <lambdabot> | () |
| 19:49:17 | <tomsmeding> | that is to say: in WHNF evaluation it terminates; in NF evaluation it does not |
| 19:49:44 | <dolio> | And showing [1..] produces an infinite string, which will then be printed infinitely. |
| 19:49:47 | <tomsmeding> | ghci NF-evaluates `show E` where E is what you entered; for [Int], NF-evaluating `show` happens to NF-evaluate the argument |
| 19:49:48 | <EvanR> | or just stick to more technical and specific stuff like WHNF |
| 19:50:16 | <haskellbridge> | <thirdofmay18081814goya> doesn't haskell only do "WHNF" evaluation? |
| 19:50:22 | <haskellbridge> | <thirdofmay18081814goya> * WHNF |
| 19:50:31 | <EvanR> | > rnf [1..] |
| 19:50:32 | <lambdabot> | error: Variable not in scope: rnf :: [a0] -> t |
| 19:50:50 | <EvanR> | you can use the deepseq package to ask for normal forms |
| 19:51:27 | <EvanR> | though it's often more practical to use strict fields or bang patterns for some purpose |
| 19:51:46 | × | michalz quits (~michalz@185.246.207.205) (Remote host closed the connection) |
| 19:51:54 | <EvanR> | strict fields changes how data gets evaluated when |
| 19:52:34 | <haskellbridge> | <thirdofmay18081814goya> right, don't we have NF evaluation of an argument only when a function is strict in that argument? |
| 19:52:44 | <EvanR> | that's not what strict means |
| 19:53:00 | <tomsmeding> | "strict" in haskell refers to WHNF |
| 19:53:03 | <tomsmeding> | not to NF :) |
| 19:53:16 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 19:53:55 | <EvanR> | strict also means specifically that a function necessarily ⊥s when presented with ⊥ |
| 19:54:24 | → | michalz joins (~michalz@185.246.207.205) |
| 19:54:36 | <EvanR> | which doesn't require normal forms to happen |
| 19:55:49 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:55:52 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 265 seconds) |
| 19:56:25 | <dolio> | > show (1:2:3:4:undefined) |
| 19:56:26 | <lambdabot> | "[1,2,3,4*Exception: Prelude.undefined |
| 19:58:17 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 265 seconds) |
| 19:58:28 | <haskellbridge> | <thirdofmay18081814goya> ah right I was getting confused. if "f" is strict in "x", "x" still only gets evaluated to the next WHNF |
| 19:58:53 | <tomsmeding> | well, "f is strict" means that x gets evaluated _at least_ to WHNF |
| 19:58:57 | <tomsmeding> | f might evaluate x further |
| 19:59:10 | <tomsmeding> | `length . show` evaluates a whole lot, typically |
| 19:59:18 | <dolio> | id is strict |
| 19:59:30 | <EvanR> | haha yeah |
| 19:59:40 | <EvanR> | strict without having to evaluate anything at all! |
| 20:00:06 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 20:00:22 | <EvanR> | where do all these random associations between evaluation and strictness come from! |
| 20:00:34 | <haskellbridge> | <thirdofmay18081814goya> profound confusion |
| 20:01:04 | <mauke> | const undefined is strict |
| 20:07:34 | <tomsmeding> | GHC's demand analysis calls 'const undefined' "hyper-strict", and 'id' "lazy" |
| 20:07:54 | <tomsmeding> | comparing https://play.haskell.org/saved/J0yapC7k with the table halfway down https://bgamari.github.io/posts/2015-01-19-understanding-ghc-core.html |
| 20:11:14 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 20:11:15 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:11:26 | → | stef204 joins (~stef204@user/stef204) |
| 20:13:59 | <EvanR> | good, that settles another myth, that lazy = non-strict |
| 20:14:41 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 20:14:45 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 20:15:41 | × | ddellacosta quits (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 20:16:18 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 20:16:21 | <tomsmeding> | I always get annoyed that there is not a single up-to-date source of truth to what the demand annotation notation means |
| 20:16:36 | <tomsmeding> | that blog post is from 2015 and it seems outdated, because I get 1L from GHC and the blog post describes 1*L |
| 20:16:51 | <tomsmeding> | I never can find anything in the source, and the wiki also doesn't seem to have anything |
| 20:16:57 | → | ddellacosta joins (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
| 20:17:09 | <tomsmeding> | but the GHC source makes _extensive_ use of the notation in Notes in the demand analyser |
| 20:17:28 | <tomsmeding> | with gems like P(AAAdAAAAA) |
| 20:17:51 | → | Guest1 joins (~Guest1@198.181.38.121.16clouds.com) |
| 20:18:06 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 20:23:33 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds) |
| 20:25:52 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 20:26:40 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:26:59 | × | Guest1 quits (~Guest1@198.181.38.121.16clouds.com) (Ping timeout: 256 seconds) |
| 20:27:46 | × | ddellacosta quits (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 265 seconds) |
| 20:27:47 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 20:31:17 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 20:37:01 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 20:40:44 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 260 seconds) |
| 20:42:06 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:43:01 | → | son0p joins (~ff@186.121.18.131) |
| 20:44:03 | × | michalz quits (~michalz@185.246.207.205) (Remote host closed the connection) |
| 20:46:38 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 20:46:38 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 20:47:00 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
| 20:47:15 | → | benjaminl_ joins (~benjaminl@c-76-144-12-233.hsd1.or.comcast.net) |
| 20:48:54 | × | benjaminl quits (~benjaminl@user/benjaminl) (Ping timeout: 260 seconds) |
| 20:50:39 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 20:51:49 | → | ddellacosta joins (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
| 20:53:37 | × | neuroevolutus quits (~neuroevol@37.19.200.148) (Ping timeout: 256 seconds) |
| 20:53:52 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 265 seconds) |
| 20:54:27 | → | alexherbo2 joins (~alexherbo@2a02-8440-3109-4750-f47c-92a3-9b35-3df5.rev.sfr.net) |
| 20:57:30 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:00:24 | → | cpressey joins (~weechat@176.254.71.203) |
| 21:01:53 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 21:10:51 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:13:29 | × | spew quits (~spew@201.141.102.132) (Quit: brb) |
| 21:13:50 | → | spew joins (~spew@201.141.102.132) |
| 21:15:33 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 21:18:09 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 246 seconds) |
| 21:24:22 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 21:24:38 | × | spew quits (~spew@201.141.102.132) (Quit: too much light) |
| 21:26:16 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:31:05 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 21:32:23 | <__monty__> | The User's Guide does mention the notation. Not sure whether it's up to date nor whether it's as detailed as you want though. |
| 21:41:42 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:42:14 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:44:53 | → | cpressey joins (~weechat@176.254.71.203) |
| 21:46:18 | × | xal quits (~xal@mx1.xal.systems) (Quit: bye) |
| 21:46:29 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 21:46:41 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Read error: Connection reset by peer) |
| 21:48:00 | <tomsmeding> | oh _there_ it was! |
| 21:48:03 | <tomsmeding> | __monty__: thanks |
| 21:48:09 | → | xal joins (~xal@mx1.xal.systems) |
| 21:52:30 | × | oo_miguel quits (~Thunderbi@78.10.207.45) (Ping timeout: 276 seconds) |
| 21:57:08 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:02:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 22:02:40 | × | son0p quits (~ff@186.121.18.131) (Quit: Leaving) |
| 22:06:04 | × | Pixi` quits (~Pixi@user/pixi) (Quit: Leaving) |
| 22:06:58 | × | cpressey quits (~weechat@176.254.71.203) (Quit: WeeChat 4.3.0) |
| 22:07:30 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 22:08:42 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Client Quit) |
| 22:10:23 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 22:10:26 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 22:12:53 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:17:32 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 22:20:54 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
| 22:22:43 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 22:28:18 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:30:04 | <zero> | i'm trying to get my head aroud the Tardis Monad. any good resource? |
| 22:30:41 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 22:31:30 | <probie> | <joke>Yes, but they're all in the future</joke> |
| 22:32:01 | <Rembane> | zero: Like this? https://blog.csongor.co.uk/time-travel-in-haskell-for-dummies/ |
| 22:32:17 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Remote host closed the connection) |
| 22:32:29 | → | ash3en joins (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
| 22:34:24 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 22:35:29 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1103w-grc-02-184-145-10-5.dsl.bell.ca) |
| 22:35:44 | × | AlexNoo quits (~AlexNoo@178.34.150.250) (Read error: Connection reset by peer) |
| 22:36:07 | → | AlexNoo joins (~AlexNoo@178.34.150.250) |
| 22:36:29 | × | alexherbo2 quits (~alexherbo@2a02-8440-3109-4750-f47c-92a3-9b35-3df5.rev.sfr.net) (Remote host closed the connection) |
| 22:36:52 | <dmj`> | when did "Just v <- M.lookup k m = v" become "non-standard" pattern guard usage |
| 22:37:10 | <dmj`> | "| Just v <- " ... |
| 22:38:21 | <probie> | context? |
| 22:39:01 | → | finsternis joins (~X@23.226.237.192) |
| 22:41:09 | <dmj`> | just getting this warning |
| 22:42:19 | × | ash3en quits (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
| 22:42:27 | <dmj`> | but its clearly part of the 2010 spec |
| 22:44:52 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:46:06 | <zero> | Rembane: that's the one i just read :) |
| 22:46:19 | <haskellbridge> | <magic_rb> "Just value <- lookup key map = value` is weird, what i are you trying to achieve? |
| 22:46:40 | <geekosaur> | looks sensible to me as a pattern guard |
| 22:46:47 | <Rembane> | zero: Sweet, that's the only one I've seen so far. :) |
| 22:47:04 | <haskellbridge> | <magic_rb> Inside a monadic assignment thingie? |
| 22:47:08 | <geekosaur> | "if the result of `lookup key map` is `Just v`, produce `v`" |
| 22:47:20 | <geekosaur> | it's not monadic assignment, it's a pttern guard |
| 22:47:24 | <haskellbridge> | <magic_rb> Huh, what if it is not? Exception |
| 22:47:40 | <geekosaur> | no, if it's not, the guard fails to match |
| 22:47:50 | <geekosaur> | look up pattern guards |
| 22:48:04 | <haskellbridge> | <magic_rb> I know about those, i just never seen that form, or im too tired |
| 22:48:36 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out) |
| 22:48:41 | <haskellbridge> | <magic_rb> Okay i guess i dont know about those |
| 22:48:48 | <haskellbridge> | <magic_rb> Well, TIL |
| 22:50:00 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 22:52:21 | <zero> | why do we need parenthesis around Data.Map.!? in `:type (Data.Map.!?)` inside ghci? |
| 22:53:21 | <zero> | ah i guess i get it |
| 22:53:25 | <zero> | needs to be an expression |
| 22:56:12 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 276 seconds) |
| 22:57:53 | <jle`> | zero: fwiw :info Data.Map.!? works |
| 23:00:08 | → | AlexNoo_ joins (~AlexNoo@178.34.150.250) |
| 23:00:17 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:03:16 | × | AlexNoo quits (~AlexNoo@178.34.150.250) (Ping timeout: 252 seconds) |
| 23:04:18 | <dmj`> | geekosaur: ghc 9.6.5 thinks otherwise :( |
| 23:04:20 | → | son0p joins (~ff@2800:e2:f80:ee7::1) |
| 23:04:36 | <dmj`> | magic_rb: there's soft pattern match failures, like what catMaybes does |
| 23:04:41 | <dmj`> | @src catMaybes |
| 23:04:41 | <lambdabot> | catMaybes ls = [x | Just x <- ls] |
| 23:05:17 | <dmj`> | pattern match failure in guards soft fail like the ones in list comps |
| 23:05:51 | <dmj`> | | Just (TVar k) <- M.lookup t s = TVar k |
| 23:06:18 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 23:07:00 | <zero> | jle`: yup, :info works with identifiers, :type works with expressions |
| 23:07:17 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:08:23 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:10:54 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 23:16:45 | → | dorin joins (~dorin@user/dorin) |
| 23:17:11 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:17:45 | <dmj`> | foldl' finally made it into the Prelude, never thought I'd see the day |
| 23:18:05 | <dmj`> | * fights back tears * |
| 23:18:37 | <EvanR> | one down, like 900 other things that should be in prelude to go xD |
| 23:20:07 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds) |
| 23:21:36 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:21:42 | <dmj`> | base should just eat mtl, transformers, text, aeson, time, haddock, cabal, etc. maybe more boot packages |
| 23:21:46 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 23:24:45 | <EvanR> | batteries |
| 23:26:12 | <probie> | I don't think aeson belongs on that list |
| 23:27:13 | × | stef204 quits (~stef204@user/stef204) (Quit: WeeChat 4.2.1) |
| 23:27:41 | <dmj`> | EvanR: boom |
| 23:27:45 | <probie> | It's too opinionated and has (what I consider to be) the wrong opinions (I'm not a fan of `ToJSON`/`FromJSON` typeclasses, because how to serialise depends on context and isn't a property a type itself) |
| 23:29:42 | <EvanR> | what other json libraries are there |
| 23:29:52 | <dmj`> | https://hackage.haskell.org/package/ghc-9.10.1/docs/GHC-Utils-Json.html |
| 23:31:04 | <zero> | i dont think mtl, transformers, aeson and time belong on that list |
| 23:31:12 | <zero> | not sure about haddock and cabal |
| 23:31:32 | <probie> | https://hackage.haskell.org/package/waargonaut |
| 23:32:36 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:33:07 | <glguy> | putting things into base just makes them harder to upgrade, not easier to use |
| 23:33:46 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds) |
| 23:34:08 | <zero> | exactly |
| 23:34:30 | <dolio> | mtl was split out of base long ago. |
| 23:35:24 | <zero> | mtl serves a very opinionated pattern that many refuse to use |
| 23:35:42 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 23:36:02 | <zero> | it would be like having lens libraries in base |
| 23:36:55 | <dmj`> | if we could divorce ghc from base that might help, or base from ghc rather. I think parts of the rts depend on base |
| 23:37:07 | <geekosaur> | it's in progress |
| 23:37:13 | <zero> | that would be nice |
| 23:37:39 | <dmj`> | well, well |
| 23:37:48 | <geekosaur> | there are a very few things, mostly ghc wired-in things, that depend on base. those are being moved to ghc-base, which is intended to be minimal |
| 23:38:06 | <geekosaur> | (you will see ghc-base already in 9.10 and I think 9.8) |
| 23:38:06 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 23:38:29 | <dmj`> | is this the balkanization effort Ericson was / is working on |
| 23:38:47 | <zero> | and hopefully updated once in a blue moon |
| 23:39:14 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 23:40:00 | <geekosaur> | similarly there are things being moved to ghc-internal, but that's more complicated as it'll depend to some extent on the "actually standardize ghc-api" effort which is still in the planning phase |
| 23:40:46 | <geekosaur> | don't recall who's working on it, have seen some discussion though |
| 23:40:56 | <dmj`> | what if we just imported everything into a single module, and let the optimizer do it's thing, don't rely on interface files |
| 23:41:41 | <geekosaur> | isn't that effectively WPC? |
| 23:41:41 | <c_wraith> | there are some things in GHC that are superlinear in module size, but not in module count |
| 23:41:45 | <zero> | things keep moving in a good direction |
| 23:41:45 | <zero> | slowly but steadily |
| 23:43:46 | <zero> | someone once explained in detail why WPC is not posssible in haskell |
| 23:44:08 | <dmj`> | zero: do you have a link to that? |
| 23:44:57 | <dmj`> | geekosaur: yea, but its still optimizations on a higher order IR, if we defunctionalized first we'd probably have better results with optimization |
| 23:44:58 | <geekosaur> | the GRIN project was working on that. sadly I think it stalled, possibly over the superlinearity issue |
| 23:45:14 | <zero> | unfortunately i lost most my IRC logs from that time, but maybe they can be found at ircbrowse.tomsmeding.com |
| 23:45:22 | <zero> | it was a few years ago though |
| 23:46:21 | <geekosaur> | sadly its search doesn't work and I think search engines and such are prohibited from indexing it? |
| 23:46:53 | <dmj`> | zero: if its possible in ocaml w/ mlton, shouldn't be a problem w/ haskell |
| 23:47:29 | <dmj`> | ocaml has gadts and higher order functions |
| 23:49:17 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:49:35 | <geekosaur> | I'm not aware of any explanations of why WPC would be impossible. I am aware of an explanation of why even with WPC it's not possible to eliminate typeclass dictionaries at compile time; might that have been what you remember? |
| 23:50:00 | <geekosaur> | (polymorphic recursion) |
| 23:53:57 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 23:55:59 | <dmj`> | rust just disables polymorphic recursion iirc, for haskell we could compile it differently. Instead of just attempting to inline into oblivion, there is a technique called intensional type analysis (that oleg discusses) that detects polymorphic recursion and basically constructs a mini interpreter from the type language. Converts it into a recursive expression tree |
| 23:56:05 | <dmj`> | https://okmij.org/ftp/Computation/typeclass.html#intensional |
| 23:56:39 | <dmj`> | I think flix.dev disables it too, as a "feature" |
| 23:56:51 | <dmj`> | since the gains from inlining are so huge |
| 23:57:49 | <dmj`> | I'd just disable it first, see how much stuff breaks w/o it |
All times are in UTC on 2024-08-26.