Logs on 2024-06-15 (liberachat/#haskell)
| 00:01:26 | → | xdminsy joins (~xdminsy@117.147.70.212) |
| 00:03:16 | × | eron quits (~eron@179.98.163.50) (Quit: Client closed) |
| 00:14:53 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 00:15:17 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 00:15:51 | → | hgolden_ joins (~hgolden@syn-172-251-233-141.res.spectrum.com) |
| 00:17:07 | × | hgolden quits (~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) (Read error: Connection reset by peer) |
| 00:17:39 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 264 seconds) |
| 00:18:39 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:30:34 | × | dysthesis quits (~dysthesis@user/dysthesis) (Ping timeout: 260 seconds) |
| 00:32:39 | → | dysthesis joins (~dysthesis@user/dysthesis) |
| 00:45:47 | × | henry40408 quits (~henry4040@175.182.111.183) (Quit: Ping timeout (120 seconds)) |
| 00:46:13 | → | henry40408 joins (~henry4040@175.182.111.183) |
| 01:05:03 | × | td_ quits (~td@i53870931.versanet.de) (Ping timeout: 264 seconds) |
| 01:27:20 | → | madhavanmi joins (~madhavanm@2409:40f4:100f:354f:8000::) |
| 01:27:49 | × | madhavanmi quits (~madhavanm@2409:40f4:100f:354f:8000::) (Client Quit) |
| 01:31:22 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 255 seconds) |
| 01:35:52 | × | dysthesis quits (~dysthesis@user/dysthesis) (Quit: dysthesis) |
| 01:38:29 | → | madhavanmi joins (~madhavanm@2409:40f4:100f:354f:8000::) |
| 01:39:17 | × | madhavanmi quits (~madhavanm@2409:40f4:100f:354f:8000::) (Client Quit) |
| 01:58:15 | → | Core9700 joins (~rosco@183.171.77.248) |
| 02:00:31 | × | rosco quits (~rosco@183.171.104.222) (Ping timeout: 260 seconds) |
| 02:03:31 | × | petrichor quits (~znc-user@user/petrichor) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:03:50 | → | petrichor joins (~znc-user@user/petrichor) |
| 02:16:15 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 02:20:11 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:dcb8:51bd:e128:b5ae) |
| 02:28:53 | × | solaire quits (~solaire@2607:fb91:1ec1:9339:7733:d241:cd3a:f15b) (Ping timeout: 240 seconds) |
| 02:29:59 | → | solaire joins (~solaire@209.0.135.98) |
| 02:31:47 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 264 seconds) |
| 02:42:05 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 240 seconds) |
| 03:02:39 | × | solaire quits (~solaire@209.0.135.98) (Ping timeout: 264 seconds) |
| 03:21:15 | × | Square quits (~Square@user/square) (Ping timeout: 260 seconds) |
| 03:35:59 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 03:36:09 | <rustisafungus> | is there a haskell to XLA compiler? i hate python |
| 03:36:28 | → | fraznel joins (~fuag1@c-67-160-124-36.hsd1.wa.comcast.net) |
| 03:41:03 | × | Core9700 quits (~rosco@183.171.77.248) (Ping timeout: 264 seconds) |
| 03:42:10 | × | xigua quits (~xigua@user/xigua) (Read error: Connection reset by peer) |
| 03:42:25 | → | xigua joins (~xigua@user/xigua) |
| 03:42:58 | → | aforemny_ joins (~aforemny@2001:9e8:6ceb:e600:2c9:e941:ad5c:4927) |
| 03:44:07 | × | aforemny quits (~aforemny@i59F516E8.versanet.de) (Ping timeout: 260 seconds) |
| 03:46:05 | → | madhavanmi joins (~madhavanm@2409:40f4:100f:354f:8000::) |
| 03:46:18 | × | madhavanmi quits (~madhavanm@2409:40f4:100f:354f:8000::) (Client Quit) |
| 03:53:13 | × | vladl quits (~vladl@24.35.90.183) (Quit: Lost terminal) |
| 04:05:28 | → | slack1256 joins (~slack1256@179.60.70.224) |
| 04:06:17 | → | madhavanmi joins (~madhavanm@2409:40f4:100f:354f:8000::) |
| 04:18:27 | → | mikess joins (~mikess@user/mikess) |
| 04:18:31 | × | mikess quits (~mikess@user/mikess) (Client Quit) |
| 04:20:59 | × | madhavanmi quits (~madhavanm@2409:40f4:100f:354f:8000::) (Ping timeout: 260 seconds) |
| 04:21:28 | → | madhavanmi joins (~madhavanm@2409:40f4:2e:8a90:8000::) |
| 04:21:57 | × | slack1256 quits (~slack1256@179.60.70.224) (Remote host closed the connection) |
| 04:46:18 | → | slack1256 joins (~slack1256@179.60.70.224) |
| 04:54:52 | × | slack1256 quits (~slack1256@179.60.70.224) (Remote host closed the connection) |
| 04:59:37 | → | philopsos1 joins (~caecilius@user/philopsos) |
| 05:10:03 | → | Midjak joins (~MarciZ@82.66.147.146) |
| 05:20:21 | → | solaire joins (~solaire@syn-024-165-026-201.res.spectrum.com) |
| 05:24:28 | <xacktm> | I'm getting some compilation errors when trying to compile Wuss's example program https://github.com/tfausak/wuss can someone point out where my error is? I suspect indentation but it's all 2-space delimited: https://github.com/tfausak/wuss |
| 05:24:51 | <xacktm> | oops error/code is: https://bpa.st/VW5A |
| 05:26:57 | <mauke> | xacktm: bad indentation on line 22 |
| 05:27:57 | <mauke> | 'let' uses layout |
| 05:28:28 | <mauke> | 'line' must be indented more than 'loop' (in the line above) because it is part of loop's definition |
| 05:29:17 | <xacktm> | ahh ok it's not like the top-level functions like `ws connection` there |
| 05:29:19 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 05:29:51 | → | rvalue joins (~rvalue@user/rvalue) |
| 05:29:58 | <mauke> | it is, in a way |
| 05:30:22 | <mauke> | the top-level layout is governed by 'where' (line 1) |
| 05:31:15 | <mauke> | 'ws' starts in column 1, so all parts of its definition must be indented by at least 1 space |
| 05:31:52 | <mauke> | but 'loop' starts in column 7 |
| 05:32:34 | <xacktm> | whoah that just blew my mind, that where clause in line 1 |
| 05:32:50 | <xacktm> | can you do imports way down in a where clause in a function? |
| 05:33:12 | <mauke> | in a rigid indentation scheme, you'd have to start a new line after 'let', then 'loop = do' (indented one more level), then another new line and indentation level |
| 05:33:31 | <mauke> | no, imports are only allowed at the top level |
| 05:35:20 | <xacktm> | hmm I think I might try that style |
| 05:35:54 | <xacktm> | https://bpa.st/VGGA you mean something like this right? it does compile |
| 05:36:21 | <mauke> | yes, exactly |
| 05:37:33 | <xacktm> | I'll let it simmer but I kinda like it already |
| 05:39:24 | × | joeyadams quits (~joeyadams@2603:6010:5100:2ed:dcb8:51bd:e128:b5ae) (Quit: Leaving) |
| 05:41:10 | <xacktm> | then if I join the let and loop = do lines, the body can stay the same indentation and it is clear where that body should be indented |
| 05:41:17 | <xacktm> | thanks :) |
| 05:43:36 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 05:44:04 | <iqubic> | I'm forgetting how haskell works. Do I need to escape single quotes in my strings? |
| 05:44:45 | <mauke> | no |
| 05:45:14 | <mauke> | unless you write your strings like ['h','e','l','l','o'] |
| 05:45:58 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 05:50:07 | × | madhavanmi quits (~madhavanm@2409:40f4:2e:8a90:8000::) (Quit: Quit) |
| 05:50:17 | → | madhavanmi joins (~madhavanm@2409:40f4:2e:8a90:8000::) |
| 05:50:25 | × | madhavanmi quits (~madhavanm@2409:40f4:2e:8a90:8000::) (Client Quit) |
| 05:52:20 | → | madhavanmi joins (~madhavanm@2409:40f4:2e:8a90:8000::) |
| 05:58:47 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 264 seconds) |
| 06:01:12 | → | soverysour joins (~soverysou@user/soverysour) |
| 06:05:39 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 264 seconds) |
| 06:12:11 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 06:14:49 | × | madhavanmi quits (~madhavanm@2409:40f4:2e:8a90:8000::) (Ping timeout: 256 seconds) |
| 06:14:53 | × | philopsos1 quits (~caecilius@user/philopsos) (Ping timeout: 240 seconds) |
| 06:15:34 | → | andrei_n joins (~andrei_n@user/andrei-n:62396) |
| 06:15:55 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 06:18:18 | → | euphores joins (~SASL_euph@user/euphores) |
| 06:18:53 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Client Quit) |
| 06:19:03 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 06:20:48 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Client Quit) |
| 06:20:57 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 06:26:34 | × | andrei_n quits (~andrei_n@user/andrei-n:62396) (Ping timeout: 255 seconds) |
| 06:29:17 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 06:33:29 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds) |
| 06:39:33 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:50:25 | → | andrei_n joins (~andrei_n@user/andrei-n:62396) |
| 06:57:29 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:00:55 | × | Midjak quits (~MarciZ@82.66.147.146) (Quit: This computer has gone to sleep) |
| 07:02:09 | × | andrei_n quits (~andrei_n@user/andrei-n:62396) (Ping timeout: 268 seconds) |
| 07:04:19 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 07:09:15 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 07:15:27 | → | andrei_n joins (~andrei_n@user/andrei-n:62396) |
| 07:19:27 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Quit: Quit) |
| 07:30:07 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:37:42 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 07:38:18 | → | acidjnk joins (~acidjnk@p200300d6e714dc5559a3cb0167348b6b.dip0.t-ipconnect.de) |
| 07:44:05 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 08:14:29 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 08:17:33 | × | Nixkernal quits (~Nixkernal@240.17.194.178.dynamic.cust.swisscom.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 08:21:05 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 08:21:53 | → | gmg joins (~user@user/gehmehgeh) |
| 08:23:44 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:24:19 | → | verde joins (~user@user/verde) |
| 08:26:25 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 08:33:25 | → | greenflower14 joins (~greenflow@103.191.25.63) |
| 08:34:12 | → | greenflower joins (~greenflow@103.191.25.63) |
| 08:35:30 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 08:37:07 | × | greenflower14 quits (~greenflow@103.191.25.63) (Client Quit) |
| 08:40:11 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 264 seconds) |
| 08:42:58 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 08:44:28 | × | dcoutts quits (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) (Ping timeout: 256 seconds) |
| 08:45:33 | × | poscat quits (~poscat@user/poscat) (Ping timeout: 256 seconds) |
| 08:47:40 | → | Franciman joins (~Franciman@mx1.fracta.dev) |
| 08:51:51 | → | poscat joins (~poscat@user/poscat) |
| 08:56:29 | → | danza joins (~francesco@na-19-77-127.service.infuturo.it) |
| 08:57:54 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 08:57:56 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving) |
| 08:58:24 | → | CiaoSen joins (~Jura@2a05:5800:2b1:a100:e6b9:7aff:fe80:3d03) |
| 08:58:35 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 09:02:11 | × | greenflower quits (~greenflow@103.191.25.63) (Quit: Client closed) |
| 09:04:34 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 09:05:11 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 09:08:27 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 09:10:11 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds) |
| 09:12:17 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 09:13:17 | × | puke quits (~puke@user/puke) (Ping timeout: 240 seconds) |
| 09:17:12 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 09:33:04 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 09:34:15 | → | troydm joins (~troydm@user/troydm) |
| 09:34:36 | × | henry40408 quits (~henry4040@175.182.111.183) (Quit: Ping timeout (120 seconds)) |
| 09:35:09 | → | henry40408 joins (~henry4040@175.182.111.183) |
| 09:35:29 | × | andrei_n quits (~andrei_n@user/andrei-n:62396) (Quit: Leaving) |
| 09:37:27 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 264 seconds) |
| 09:37:45 | × | henry40408 quits (~henry4040@175.182.111.183) (Client Quit) |
| 09:38:14 | → | henry40408 joins (~henry4040@175.182.111.183) |
| 09:40:40 | × | henry40408 quits (~henry4040@175.182.111.183) (Client Quit) |
| 09:41:06 | → | henry40408 joins (~henry4040@175.182.111.183) |
| 09:51:30 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 09:56:23 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 264 seconds) |
| 10:16:11 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 10:21:57 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 10:24:05 | → | __monty__ joins (~toonn@user/toonn) |
| 10:36:08 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 10:38:03 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 10:40:00 | → | euleritian joins (~euleritia@dynamic-176-006-000-036.176.6.pool.telefonica.de) |
| 10:40:05 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 10:44:44 | → | noumenon joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 10:44:51 | → | greenflower joins (~greenflow@103.191.25.63) |
| 10:47:57 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:53:34 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 10:55:23 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 11:00:00 | × | euleritian quits (~euleritia@dynamic-176-006-000-036.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:00:18 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:04:26 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 256 seconds) |
| 11:06:09 | × | greenflower quits (~greenflow@103.191.25.63) (Quit: Client closed) |
| 11:08:53 | → | greenflower38 joins (~greenflow@103.191.25.63) |
| 11:25:47 | × | CiaoSen quits (~Jura@2a05:5800:2b1:a100:e6b9:7aff:fe80:3d03) (Ping timeout: 268 seconds) |
| 11:30:32 | × | greenflower38 quits (~greenflow@103.191.25.63) (Quit: Client closed) |
| 11:31:29 | → | td_ joins (~td@i53870937.versanet.de) |
| 11:31:54 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 11:32:53 | × | sprout quits (~quassel@2a02-a448-3a80-0-2046-6d0d-4c96-b4d9.fixed6.kpn.net) (Ping timeout: 240 seconds) |
| 11:34:20 | → | sprout joins (~quassel@2a02-a448-3a80-0-758a-35d7-4890-aab6.fixed6.kpn.net) |
| 11:37:32 | × | polux quits (~polux@51-15-169-172.rev.poneytelecom.eu) (Read error: Connection reset by peer) |
| 11:37:40 | → | polux joins (~polux@51-15-169-172.rev.poneytelecom.eu) |
| 11:40:41 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 11:49:38 | <kaol> | I ended up doing code like (\a b c -> a $ b $ c $ someval) <$> Just (+1) <*> Just (+2) <*> Just (+3). It works but I was left feeling that maybe I missed some more obvious way of writing it. Anyone think of anything? |
| 11:50:42 | <ncf> | uh |
| 11:51:00 | <ncf> | Just (someval + 6) ? |
| 11:51:08 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 11:51:23 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds) |
| 11:52:06 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 11:52:11 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Read error: Connection reset by peer) |
| 11:52:19 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 11:54:15 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 11:54:48 | <kaol> | Stuffing them in a foldable would allow foldr ($) someval. Probably not worth it. |
| 11:54:54 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:58:03 | <ncf> | why would you do this if you statically have three `Just`s? did you mean (\a b c -> a $ b $ c $ someval) <$> x <*> y <*> z ? |
| 11:58:26 | <kaol> | I guess what I'm really asking for is how to apply arbitrary amount of endofuctions that are wrapped inside applicatives. |
| 11:59:18 | <ncf> | in theory you could have something akin to Endo and Kleisli but for f (a -> a) |
| 11:59:27 | <ncf> | which becomes a Monoid if f is Applicative |
| 11:59:35 | <ncf> | i don't know if that's defined anywhere though |
| 11:59:58 | <kaol> | My real code doesn't have static Justs, it was just for example's sake to make it self contained one liner. |
| 12:00:00 | <ncf> | plus i'm always a bit uneasy with these things because the type system doesn't enforce which direction things are composed, so you have to remember it |
| 12:00:19 | <ncf> | why would you add things that aren't in your code, if the point is simplicity? anyway |
| 12:00:56 | <probie> | :t \someval -> fmap ((`appEndo` someval) . foldMap Endo) (sequenceA [Just (+1), Just (+2), Just (+3)]) |
| 12:00:57 | <lambdabot> | Num b => b -> Maybe b |
| 12:03:53 | <ncf> | i'm surprised hoogle doesn't find Kleisli for `(a -> m b) -> x m a b` |
| 12:07:08 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 12:07:26 | <ncf> | ooo, you can describe this as the change of enriching category induced by the lax monoidal functor f |
| 12:26:39 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:27:17 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 12:30:52 | × | xdminsy quits (~xdminsy@117.147.70.212) (Quit: Konversation terminated!) |
| 12:31:18 | → | xdminsy joins (~xdminsy@117.147.70.212) |
| 12:32:04 | × | fraznel quits (~fuag1@c-67-160-124-36.hsd1.wa.comcast.net) (Ping timeout: 268 seconds) |
| 12:33:52 | <Leary> | Ideally, we would have `newtype (f `Over` c) a b = Over (f (c a b))` with `instance (Applicative f, Category c) => Category (f `Over` c)` and `newtype Endo c a = Endo (c a a)` with `instance Category c => Monoid (Endo c)`. Then it would just be `coerce . foldMap (Endo . Over)`. |
| 12:36:09 | <Leary> | The former being to Applicative as Kleisli is to Monad; in an alternative history we could have had `type Monad f = Category (Kleisli f)` and `type Applicative f = Category (f `Over` (->))`. |
| 12:36:12 | <ncf> | Over = Tannen https://hackage.haskell.org/package/bifunctors-5.6.2/docs/Data-Bifunctor-Tannen.html#t:Tannen |
| 12:36:38 | <ncf> | (Applicative f, Category p) => Category (Tannen f p :: k -> k -> Type) |
| 12:36:40 | <ncf> | nice |
| 12:37:33 | <ncf> | and Endo = Join https://hackage.haskell.org/package/bifunctors-5.6.2/docs/Data-Bifunctor-Join.html |
| 12:38:02 | <ncf> | that doesn't have the Monoid instance (probably for the best, given the issue with the direction of composition) |
| 12:38:30 | → | danza_ joins (~francesco@151.47.17.233) |
| 12:39:28 | × | danza quits (~francesco@na-19-77-127.service.infuturo.it) (Read error: Connection reset by peer) |
| 12:41:29 | <Leary> | Cheers---it's good to know that `Over` is actually defined somewhere, and what it's called---I always felt it was an omission. Re `Endo`/`Join`, I don't think that's a good reason to omit the instance. It should just compose the same order as the category by default, and hence the opposite way with `Dual`. |
| 12:42:41 | × | henry40408 quits (~henry4040@175.182.111.183) (Quit: Ping timeout (120 seconds)) |
| 12:43:09 | → | henry40408 joins (~henry4040@175.182.111.183) |
| 12:43:17 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 12:44:10 | <ncf> | i guess an order is already chosen for Endo |
| 12:44:15 | <ncf> | the actual Endo |
| 12:45:51 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 264 seconds) |
| 12:52:03 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Read error: Connection reset by peer) |
| 12:52:16 | → | madhavanmi joins (~madhavanm@2a09:bac1:3680:30::23:2c8) |
| 12:56:41 | × | danza_ quits (~francesco@151.47.17.233) (Remote host closed the connection) |
| 12:56:44 | × | madhavanmi quits (~madhavanm@2a09:bac1:3680:30::23:2c8) (Ping timeout: 268 seconds) |
| 12:57:16 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 12:57:56 | <hammond> | terrible question, but is Category Theory too abstract? too up there? or can is it applied? |
| 12:57:56 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds) |
| 12:58:22 | → | dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 13:02:30 | → | danza joins (~francesco@151.47.24.35) |
| 13:06:03 | → | meritamen joins (~user@user/meritamen) |
| 13:06:18 | → | dcoutts joins (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) |
| 13:15:50 | → | Square joins (~Square@user/square) |
| 13:19:05 | × | dcoutts quits (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) (Ping timeout: 272 seconds) |
| 13:28:01 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Read error: Connection reset by peer) |
| 13:28:17 | → | madhavanmi joins (~madhavanm@2a09:bac1:3680:30::19b:19f) |
| 13:30:06 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:6465:9d89:eb1c:da19) |
| 13:33:07 | × | madhavanmi quits (~madhavanm@2a09:bac1:3680:30::19b:19f) (Ping timeout: 268 seconds) |
| 13:33:46 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 13:40:41 | × | danza quits (~francesco@151.47.24.35) (Quit: Leaving) |
| 13:49:02 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds) |
| 13:50:04 | × | mlatys quits (~mlatys@2409:8938:49:df48:cc31:2eff:fe94:4eb8) (Ping timeout: 264 seconds) |
| 13:51:21 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 13:55:37 | → | Midjak joins (~MarciZ@82.66.147.146) |
| 13:56:02 | <hololeap> | is this being caused by gcc exiting with a non-zero exit code, or by ghc interpreting the warning as an error? https://github.com/mvv/posix-timer/issues/2 |
| 13:59:27 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 14:10:19 | <lxsameer> | hey folks, I have bunch of functions with the following type: Int -> IO (Either e a) what is the best way to chain them together? |
| 14:10:48 | <lxsameer> | btw `a` is Int here and e is Exception |
| 14:12:04 | <ncf> | (>=>) in ExceptT Exception IO ? |
| 14:13:37 | <lxsameer> | ncf: hmmm I'm trying to avoid using Except, my main issue here is that I want to utilize the Monad type class for Either, and automatically return Left e and any step if the either value matched that |
| 14:14:04 | <ncf> | that's... what ExceptT is for |
| 14:14:05 | <lxsameer> | something like a foldr |
| 14:14:49 | <lxsameer> | ok thank you |
| 14:22:17 | <mauke> | IO does exceptions natively |
| 14:22:22 | <mauke> | you could just use IO a |
| 14:22:29 | → | sebastian joins (~sebastian@c-69-138-1-224.hsd1.md.comcast.net) |
| 14:22:43 | sebastian | is now known as Guest9389 |
| 14:24:16 | <lxsameer> | mauke: the lib that I'm using returns IO (Either ...) |
| 14:24:38 | <mauke> | hololeap: from the C side of things, it's caused by the code being wrong. it was undefined behavior in C89/C90 and it's been an error since C99 |
| 14:24:54 | × | Guest9389 quits (~sebastian@c-69-138-1-224.hsd1.md.comcast.net) (Client Quit) |
| 14:25:15 | <mauke> | gcc says "error:", so I assume it exits with a non-zero status |
| 14:30:27 | × | meritamen quits (~user@user/meritamen) (Ping timeout: 260 seconds) |
| 14:30:37 | <hololeap> | ok. it sounds like it started after an upgrade to gcc 14, so they must have upgraded the warning to an error |
| 14:31:55 | <mauke> | yeah, https://gcc.gnu.org/gcc-14/porting_to.html |
| 14:33:07 | → | causal joins (~eric@50.35.88.207) |
| 14:37:45 | <hololeap> | what would be the argument to pass to `cabal configure` to disable that as a workaround? |
| 14:38:53 | <hololeap> | --gcc-option=-Wno-error=implicit-function-declaration ? |
| 14:40:11 | <mauke> | I swear, programmers would use -fignore-errors everywhere if they could |
| 14:41:30 | <hololeap> | I don't. I use -Wall -Werror wherever I can :) |
| 14:42:21 | <hololeap> | but just for the sake of knowledge, would --gcc-option=... work? |
| 14:42:30 | <hololeap> | is that a valid argument? |
| 14:43:14 | <hololeap> | `cabal configure --help` shows "--PROG-option=OPT", but I'm not sure if it will take gcc as PROG |
| 14:43:24 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:45:07 | <hololeap> | also, I wonder if the haskell github action could be told to use gcc 14 so this shows up as an error in their CI |
| 14:46:40 | <mauke> | I don't know |
| 14:52:20 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds) |
| 14:53:45 | → | Lycurgus joins (~georg@user/Lycurgus) |
| 15:04:21 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 15:05:43 | × | Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving) |
| 15:06:04 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Quit: Quit) |
| 15:17:50 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 15:18:30 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 15:23:15 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 15:34:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:38:06 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 15:39:21 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 15:43:18 | <monochrom> | -fignore-errors = python and php |
| 15:45:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:46:19 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 15:48:26 | <monochrom> | But PROG can be gcc IIRC. Give it a try. |
| 15:52:43 | → | raym joins (~ray@115.187.32.4) |
| 15:52:49 | × | haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection) |
| 15:53:21 | → | rdcdr_ joins (~rdcdr@97-113-223-47.tukw.qwest.net) |
| 15:53:38 | → | haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com) |
| 15:53:38 | ChanServ | sets mode +v haskellbridge |
| 15:54:04 | × | haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection) |
| 15:54:20 | × | rdcdr quits (~rdcdr@user/rdcdr) (Ping timeout: 268 seconds) |
| 15:57:10 | × | raym quits (~ray@115.187.32.4) (Client Quit) |
| 15:57:29 | → | raym joins (~ray@115.187.32.4) |
| 15:58:54 | → | haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com) |
| 15:58:54 | ChanServ | sets mode +v haskellbridge |
| 15:59:19 | × | raym quits (~ray@115.187.32.4) (Changing host) |
| 15:59:19 | → | raym joins (~ray@user/raym) |
| 16:00:42 | × | raym quits (~ray@user/raym) (Client Quit) |
| 16:01:04 | → | raym joins (~ray@user/raym) |
| 16:03:01 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 16:04:22 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds) |
| 16:04:38 | → | euleritian joins (~euleritia@dynamic-176-002-144-170.176.2.pool.telefonica.de) |
| 16:07:57 | × | euleritian quits (~euleritia@dynamic-176-002-144-170.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 16:08:15 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 16:11:23 | × | Square quits (~Square@user/square) (Ping timeout: 264 seconds) |
| 16:15:45 | <hololeap> | monochrom: yeah, it worked. also I added "#include <stdio.h>" to the two .hsc files and submitted it as a PR |
| 16:20:51 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 268 seconds) |
| 16:24:17 | × | xdminsy quits (~xdminsy@117.147.70.212) (Read error: Connection reset by peer) |
| 16:26:59 | → | billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 16:27:10 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 16:29:08 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 16:32:56 | <rustisafungus> | https://www.youtube.com/watch?v=D5osk9lrGNg |
| 16:33:39 | <monochrom> | What would that be? |
| 16:34:10 | <rustisafungus> | computer chronicles |
| 16:36:04 | <rustisafungus> | program code is a tree. what is the high level data structure corresponding to the *state* of a program prior to consideration of evaluation strategy? |
| 16:39:06 | <c_wraith> | that question makes some unfounded assumptions. Even "program code is a tree" is only one way to look at things. |
| 16:39:59 | <c_wraith> | The state of a program might be viewed as the state of some specific hardware. Or it might be the model the programming language defines. Or you might use something in between. |
| 16:42:21 | <rustisafungus> | are there nontree programming languages? |
| 16:42:37 | <c_wraith> | you can always construct a parse as a tree. that's not what I mean. |
| 16:42:48 | <rustisafungus> | reduction (and choice of evaluation strategy) is required to map the state onto hardware |
| 16:42:56 | <c_wraith> | I mean you can also construct a more general graph, if you use a different strategy |
| 16:43:07 | <rustisafungus> | different eval strategy? |
| 16:43:21 | <c_wraith> | no, I'm still talking about the representation of the code. |
| 16:43:22 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:43:24 | <monochrom> | I'm going to s/evaluation strategy/operational semantics/ . What is your definition of "state" if you don't specify an operational semantics? |
| 16:43:52 | <c_wraith> | I'm saying you should say "code is a tree" when it's much more accurate to say "code can be modeled as a tree". It's not that it *is* a tree. It's that a tree works as a model. |
| 16:44:06 | <c_wraith> | err, shouldn't say |
| 16:44:37 | <monochrom> | Hell, in fact, s/definition/mathematical definition/ I refuse to do armchair philosophy. |
| 16:45:38 | <rustisafungus> | okay code can be (fully?) modeled as a tree... |
| 16:45:42 | <c_wraith> | In the same way, there isn't a single "the state" of a program independent of the model you're working in. |
| 16:45:58 | <monochrom> | Also the elephant in the room: s/the/a/ |
| 16:46:29 | <rustisafungus> | wow what, ... are you including something like the "intention of the programmer" in the code here or ...? or are you including something like evaluation strategy dependent execution? |
| 16:47:35 | <c_wraith> | No, I mean do you accept a full dump of my computer's registers, TLBs, durable storage, RAM, etc as a program state? |
| 16:47:47 | <c_wraith> | because there's some model where that *is* the program state. |
| 16:48:15 | <rustisafungus> | c_wraith: well that would be an example of program state, but to be able to know what was in RAM you would need to have evaluated the next instruction |
| 16:48:37 | <rustisafungus> | whereas i am trying to ask, can i model the program state before you evaluate in any specific manner |
| 16:49:35 | <c_wraith> | sure, with a computer that's turned off. |
| 16:51:09 | <c_wraith> | as monochrom says, it's a sort of philosophy question. What's the state of your program before the big bang? |
| 16:52:42 | <rustisafungus> | well, on paper? |
| 16:52:45 | <c_wraith> | Any model you choose to work in will define starting conditions. I think that's what you're actually going for. |
| 16:52:53 | <c_wraith> | But it's model-dependent. |
| 16:53:01 | <c_wraith> | Choose a model, and then you have your initial conditions. |
| 16:53:20 | <rustisafungus> | okay let me make this concrete: can i model my program state successfully as a tree? |
| 16:53:28 | <c_wraith> | a tree of what? |
| 16:53:35 | <c_wraith> | in what model? |
| 16:54:55 | <rustisafungus> | what is a model, then? |
| 16:55:40 | <c_wraith> | Let me make things concrete in a different way. GHC compiles haskell code via a representation it calls STG. In this representation, the code is converted to a graph, and evaluation is graph reduction. |
| 16:55:59 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Read error: Connection reset by peer) |
| 16:56:40 | <rustisafungus> | right, and this is a "nonstrict evaluation strategy" |
| 16:56:57 | <c_wraith> | it is one possible non-strict evaluation strategy |
| 16:58:35 | <rustisafungus> | right... so how does the tree AST become a graph? |
| 16:59:10 | <c_wraith> | pretty simply, actually. Names are resolved to edges to their definitions. |
| 16:59:24 | <c_wraith> | any recursive definition becomes a loop. |
| 16:59:34 | <c_wraith> | err. a cycle in the graph. |
| 16:59:49 | <rustisafungus> | ah... ok so the tree becomes a graph solely due to recursion? |
| 17:00:41 | <c_wraith> | *in that representation of Haskell code*, that's the way things stop being a tree. There are other representations. There are other languages. |
| 17:00:51 | <rustisafungus> | so i can reasonably say "a graph originating from a tree plus special self-reference edges"? |
| 17:02:15 | <c_wraith> | that's pretty accurate for the way GHC compiles Haskell. |
| 17:02:33 | <c_wraith> | But as I keep saying, this is all very context dependent. |
| 17:03:08 | <c_wraith> | If you don't specify the context, the model in use, a statement like that isn't meaningful enough to even declare it to be true or false. |
| 17:03:11 | <rustisafungus> | i mean, graphs are a very general (the most general...?) structure--are there languages which are not well modeled by tree+recursive_edge ? |
| 17:03:29 | <rustisafungus> | model is equivalent to reduction rules? |
| 17:04:14 | <c_wraith> | a model is a way of specifying the meaning of constructs. |
| 17:04:33 | <rustisafungus> | meaning as in how a human interprets things? |
| 17:04:41 | <rustisafungus> | as in, semantics? |
| 17:06:45 | <c_wraith> | all these terms have too many definitions. Things can get fuzzy. The important part about a model is that it presents a meaning for a formalism, but it doesn't have to be the only meaning. |
| 17:07:18 | <c_wraith> | "semantics" is usually defined within a model, in the context of programming. |
| 17:07:37 | <c_wraith> | Less so in linguistics. |
| 17:09:01 | <rustisafungus> | ..as in the anchoring to the "real world" like the fact that some variable corresponds to an estimate of the temperature of a room, or the degree to which a person is regarded as extroverted? |
| 17:11:28 | <c_wraith> | oh, note that the graph STG creates doesn't need recursion to stop being a tree. something as simple as (1 + (2 + 3)) inserts two different edges to the node defining (+). Not a tree anymore! |
| 17:11:39 | <monochrom> | Ugh you have no executional model and you intend to have none and yet you call it "real world". |
| 17:12:31 | <monochrom> | One more data point for my empirical model that when people emphasize "real world" they are the ones who are detached. |
| 17:13:13 | <monochrom> | (Along the same line that if in a debate one side has to say "I have the right/freedom" then it means they don't have any real point to make.) |
| 17:14:39 | <rustisafungus> | c_wraith: okay that is an interesting point ... i don't quite see your (1+(2+3)) there, all i see is the AST |
| 17:15:37 | <rustisafungus> | would it be like both (1, ptr_to_plus23) and (2 3) pointing at (+) ? |
| 17:18:30 | <c_wraith> | yeah, it's something like that. |
| 17:19:14 | <rustisafungus> | so... where is ptr_to_plus23? |
| 17:19:40 | <rustisafungus> | do you visualize a boundary around (+) (2 3) or something, and ptr_to_plus23 points to that? |
| 17:20:08 | <rustisafungus> | because you can't point to (2 3) and you can't point to (+), because neither are individually adequate |
| 17:22:51 | <c_wraith> | I mean, it's the same as the AST, except (+) has been changed from an abstract symbol to a function call. The function itself is entered from different call sites, so it's got multiple edges to it in the graph. |
| 17:23:37 | × | myme quits (~myme@2a01:799:d5c:5f00:1e2b:ea2d:8288:44e3) (Ping timeout: 256 seconds) |
| 17:23:58 | <rustisafungus> | but ptr_to_plus23 can't point at (+) itself, something must distinguish (+) (2 3) from (+) |
| 17:27:17 | <c_wraith> | I mean... it would have been rejected during type checking if it was just (+) |
| 17:27:37 | <rustisafungus> | right but with this i am saying that "graph" doesn't quite describe this data structure in the best way |
| 17:27:50 | <c_wraith> | (+ 2 3) is just a graph node. |
| 17:28:20 | <rustisafungus> | (+ 1 (+ 2 3)), the +s are "different" there,... i think? |
| 17:28:34 | <rustisafungus> | whereas it seemed like you wanted to emphasize the sameness of the +? |
| 17:28:48 | <c_wraith> | the two +s there do exactly the same thing. |
| 17:28:49 | <rustisafungus> | i guess we can say referential transparency so the +s are identical? |
| 17:29:02 | <geekosaur> | no? the (+)s are the same, there are Ap nodes for the applications |
| 17:29:25 | <rustisafungus> | but then, that's just a tree |
| 17:29:27 | <c_wraith> | Enter the (+) definition. Determine that both arguments need to be evaluated. Evaluate each argument. Add them together. |
| 17:29:43 | <rustisafungus> | whereas you were saying that somehow this was not a tree |
| 17:30:13 | <c_wraith> | It's more like Call((+), 1, Call((+), 2, 3)) |
| 17:30:37 | <c_wraith> | two different edges to the same (+) |
| 17:31:38 | <c_wraith> | the definition of (+) clearly doesn't get duplicated every time you add together two numbers. |
| 17:31:50 | <c_wraith> | It's a shared node in the evaluation graph. |
| 17:32:21 | → | dcoutts joins (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) |
| 17:32:35 | <rustisafungus> | i mean unless the program can change the definition of + at runtime... |
| 17:33:39 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 17:33:40 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:34:00 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 17:34:21 | <c_wraith> | that's not a thing Haskell does. As I said, this is all very context-dependent. (You can shadow names in Haskell, but that doesn't change the value of the name for anything that isn't in the shadowing scope) |
| 17:35:16 | <rustisafungus> | is there a nice registration free image pasting service |
| 17:36:08 | <geekosaur> | https://0x0.st/ |
| 17:36:44 | → | ethantwardy joins (user@user/ethantwardy) |
| 17:37:10 | × | ethantwardy quits (user@user/ethantwardy) (Client Quit) |
| 17:37:36 | → | ethantwardy joins (user@user/ethantwardy) |
| 17:39:35 | <rustisafungus> | https://0x0.st/XcEN.png <-- here is what i see |
| 17:44:07 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:45:44 | <dolio> | Depending on how all you're thinking of things, when you do `let x = 2 + 2 in x + x`, the graph pointing to x twice matters because when 2+2 gets replaced by 4, it only needs to happen once. |
| 17:46:25 | <dolio> | Whether you consider that 'code' is the question. |
| 17:46:51 | <rustisafungus> | that's probably code? i guess you are pointing out that i might have some io here and you don't know how that mixes in? |
| 17:48:12 | <dolio> | No, there's no i/o. It's just that `let x = 2 + 2 in x + x` reduces like `let x = 4 in x + x` → `4 + 4` → `8` |
| 17:49:00 | <dolio> | But you could draw it as a graph, instead of the textual `let` with names. |
| 17:49:27 | <dolio> | The outer + points to the same `2+2` node twice. |
| 17:49:57 | <dolio> | So when that 2+2 is replaced by 4, it's replaced everywhere. |
| 17:50:27 | <monochrom> | Or rather, there is only one thing replaced, but it's visible everywhere. |
| 17:51:45 | <rustisafungus> | i see |
| 17:52:10 | <rustisafungus> | very unfortunately i need to run but i would like to have a really clear picture of this at some point |
| 17:53:06 | <rustisafungus> | i'll look at lchaskell in case folks have things to add here |
| 17:53:09 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Remote host closed the connection) |
| 17:53:51 | → | rustisafungus joins (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) |
| 17:54:26 | <rustisafungus> | i'll look at lchaskell later in case folks have things to add here |
| 17:54:30 | × | rustisafungus quits (~segfaultf@23-93-189-95.fiber.dynamic.sonic.net) (Client Quit) |
| 17:55:14 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 17:57:41 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds) |
| 18:05:39 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 264 seconds) |
| 18:10:21 | → | dcoutts_ joins (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) |
| 18:11:00 | → | Noinia joins (~Frank@77-162-168-71.fixed.kpn.net) |
| 18:11:13 | → | _leo___ joins (~emmanuelu@user/emmanuelux) |
| 18:11:43 | × | CalimeroTeknik quits (~calimero@user/calimeroteknik) (Ping timeout: 255 seconds) |
| 18:12:37 | × | kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (Ping timeout: 255 seconds) |
| 18:12:48 | → | kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host) |
| 18:13:04 | × | dcoutts quits (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) (Ping timeout: 255 seconds) |
| 18:13:04 | × | arahael quits (~arahael@119-18-1-21.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds) |
| 18:13:04 | × | WzC quits (~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 255 seconds) |
| 18:13:32 | × | Buggys- quits (Buggys@user/Buggys-) (Ping timeout: 255 seconds) |
| 18:13:58 | × | shachaf quits (~shachaf@user/shachaf) (Ping timeout: 255 seconds) |
| 18:14:25 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Ping timeout: 255 seconds) |
| 18:15:11 | → | iteratee joins (~kyle@162.218.222.207) |
| 18:15:35 | → | shachaf joins (~shachaf@user/shachaf) |
| 18:15:38 | → | reterrb joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 18:15:46 | × | iteratee_ quits (~kyle@162.218.222.207) (Ping timeout: 255 seconds) |
| 18:16:14 | × | markasoftware_ quits (~quassel@107.161.26.124) (Ping timeout: 255 seconds) |
| 18:16:31 | → | markasoftware joins (~quassel@107.161.26.124) |
| 18:16:41 | × | kosmikus quits (~kosmikus@nullzig.kosmikus.org) (Ping timeout: 255 seconds) |
| 18:17:08 | × | xerox quits (~edi@user/edi) (Ping timeout: 255 seconds) |
| 18:18:09 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 18:18:14 | → | kosmikus joins (~kosmikus@nullzig.kosmikus.org) |
| 18:18:35 | → | xerox joins (~edi@user/edi) |
| 18:20:03 | → | CalimeroTeknik joins (~calimero@ctkarch.org) |
| 18:20:31 | × | dcoutts_ quits (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) (Ping timeout: 260 seconds) |
| 18:27:32 | → | Buggys joins (Buggys@shelltalk.net) |
| 18:31:48 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Read error: Connection reset by peer) |
| 18:40:47 | × | _leo___ quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 18:46:24 | × | Midjak quits (~MarciZ@82.66.147.146) (Quit: This computer has gone to sleep) |
| 18:50:52 | → | madhavanmi joins (~madhavanm@2a09:bac5:3b10:137d::1f1:1f6) |
| 18:54:12 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 18:59:41 | × | madhavanmi quits (~madhavanm@2a09:bac5:3b10:137d::1f1:1f6) (Ping timeout: 240 seconds) |
| 19:01:18 | → | madhavanmi joins (~madhavanm@2409:40f4:3c:714e:8000::) |
| 19:01:30 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 268 seconds) |
| 19:08:54 | × | pieguy128_ quits (~pieguy128@bras-base-mtrlpq5031w-grc-47-67-70-101-105.dsl.bell.ca) (Ping timeout: 268 seconds) |
| 19:10:27 | → | pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-45-67-70-24-166.dsl.bell.ca) |
| 19:11:30 | → | dcoutts_ joins (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) |
| 19:13:09 | → | leah2 joins (~leah@vuxu.org) |
| 19:13:50 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
| 19:20:39 | × | madhavanmi quits (~madhavanm@2409:40f4:3c:714e:8000::) (Ping timeout: 264 seconds) |
| 19:21:41 | × | dcoutts_ quits (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) (Ping timeout: 240 seconds) |
| 19:22:57 | → | falafel joins (~falafel@2a0c:5a87:3103:ec01::62b8) |
| 19:26:25 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 19:51:02 | → | michalz joins (~michalz@185.246.207.205) |
| 19:51:06 | → | Square joins (~Square@user/square) |
| 19:51:07 | × | sudden quits (~cat@user/sudden) (Ping timeout: 272 seconds) |
| 19:56:30 | × | Miroboru quits (~myrvoll@178-164-114.82.3p.ntebredband.no) (Quit: Lost terminal) |
| 19:57:13 | → | myme joins (~myme@2a01:799:d5c:5f00:7ed6:c0b1:f09e:3f4b) |
| 19:57:16 | × | myme quits (~myme@2a01:799:d5c:5f00:7ed6:c0b1:f09e:3f4b) (Client Quit) |
| 20:00:29 | × | AlexZenon quits (~alzenon@178.34.163.204) (Ping timeout: 240 seconds) |
| 20:02:24 | → | sudden joins (~cat@user/sudden) |
| 20:02:46 | → | AlexZenon joins (~alzenon@178.34.163.204) |
| 20:03:31 | × | joeyadams quits (~joeyadams@2603:6010:5100:2ed:6465:9d89:eb1c:da19) (Quit: Leaving) |
| 20:05:39 | × | TactfulCitrus quits (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) (Ping timeout: 264 seconds) |
| 20:10:16 | × | mzg quits (mzg@abusers.hu) (Ping timeout: 268 seconds) |
| 20:10:23 | → | mzg joins (mzg@abusers.hu) |
| 20:13:03 | → | myme joins (~myme@2a01:799:d5c:5f00:7ed6:c0b1:f09e:3f4b) |
| 20:13:33 | × | myme quits (~myme@2a01:799:d5c:5f00:7ed6:c0b1:f09e:3f4b) (Client Quit) |
| 20:14:19 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 20:18:55 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 20:20:12 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 20:24:45 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 268 seconds) |
| 20:24:47 | → | TactfulCitrus joins (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) |
| 20:31:59 | → | fraznel joins (~fuag1@c-67-160-124-36.hsd1.wa.comcast.net) |
| 20:32:23 | × | mzg quits (mzg@abusers.hu) (Ping timeout: 264 seconds) |
| 20:32:30 | → | mzg joins (mzg@abusers.hu) |
| 20:38:14 | → | dcoutts_ joins (~duncan@oxfd-27-b2-v4wan-164228-cust163.vm42.cable.virginm.net) |
| 20:38:42 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 20:40:56 | × | nitrix quits (~nitrix@user/meow/nitrix) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:42:12 | → | nitrix joins (~nitrix@user/meow/nitrix) |
| 20:50:13 | × | solaire quits (~solaire@syn-024-165-026-201.res.spectrum.com) (Remote host closed the connection) |
| 20:51:01 | → | solaire joins (~solaire@syn-024-165-026-201.res.spectrum.com) |
| 20:53:33 | → | Miroboru joins (~myrvoll@178-164-114.82.3p.ntebredband.no) |
| 20:55:22 | × | michalz quits (~michalz@185.246.207.205) (Quit: ZNC 1.9.0 - https://znc.in) |
| 20:57:51 | × | solaire quits (~solaire@syn-024-165-026-201.res.spectrum.com) (Ping timeout: 264 seconds) |
| 20:59:42 | × | ocra8_ quits (~ocra8@user/ocra8) (Read error: Connection reset by peer) |
| 21:00:33 | → | acidjnk_new joins (~acidjnk@p200300d6e714dc5559a3cb0167348b6b.dip0.t-ipconnect.de) |
| 21:03:51 | × | acidjnk quits (~acidjnk@p200300d6e714dc5559a3cb0167348b6b.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 21:05:25 | × | falafel quits (~falafel@2a0c:5a87:3103:ec01::62b8) (Ping timeout: 255 seconds) |
| 21:07:48 | × | ethantwardy quits (user@user/ethantwardy) (Quit: WeeChat 4.2.2) |
| 21:08:19 | → | ethantwardy joins (user@user/ethantwardy) |
| 21:08:23 | × | ethantwardy quits (user@user/ethantwardy) (Client Quit) |
| 21:08:52 | → | ethantwardy joins (user@user/ethantwardy) |
| 21:09:20 | × | ethantwardy quits (user@user/ethantwardy) (Client Quit) |
| 21:11:04 | → | ethantwardy joins (user@user/ethantwardy) |
| 21:12:04 | × | ethantwardy quits (user@user/ethantwardy) (Client Quit) |
| 21:12:29 | → | ethantwardy joins (user@user/ethantwardy) |
| 21:13:06 | × | ethantwardy quits (user@user/ethantwardy) (Client Quit) |
| 21:13:27 | → | ethantwardy joins (user@user/ethantwardy) |
| 21:29:12 | × | fraznel quits (~fuag1@c-67-160-124-36.hsd1.wa.comcast.net) (Quit: Leaving) |
| 21:32:18 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 21:33:25 | → | xdminsy joins (~xdminsy@117.147.70.212) |
| 21:34:51 | × | billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Quit: Leaving) |
| 21:35:50 | → | rvalue- joins (~rvalue@user/rvalue) |
| 21:36:35 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 252 seconds) |
| 21:39:47 | rvalue- | is now known as rvalue |
| 21:40:00 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:54:14 | → | nikolis joins (~nikolis@athedsl-368381.home.otenet.gr) |
| 21:54:31 | × | nikolis quits (~nikolis@athedsl-368381.home.otenet.gr) (Client Quit) |
| 21:56:01 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:59:17 | × | finsternis quits (~X@23.226.237.192) (Ping timeout: 240 seconds) |
| 21:59:48 | → | finsternis joins (~X@23.226.237.192) |
| 22:01:18 | → | nkatte joins (~nkatte@2804:14c:87de:706b:87a0:289b:bb82:335d) |
| 22:01:48 | × | nkatte quits (~nkatte@2804:14c:87de:706b:87a0:289b:bb82:335d) (Changing host) |
| 22:01:48 | → | nkatte joins (~nkatte@user/nkatte) |
| 22:03:43 | × | verde quits (~user@user/verde) (Quit: Leaving) |
| 22:04:00 | × | nkatte quits (~nkatte@user/nkatte) (Client Quit) |
| 22:04:39 | → | nkatte joins (~nkatte@2804:14c:87de:706b:87a0:289b:bb82:335d) |
| 22:05:05 | × | nkatte quits (~nkatte@2804:14c:87de:706b:87a0:289b:bb82:335d) (Changing host) |
| 22:05:05 | → | nkatte joins (~nkatte@user/nkatte) |
| 22:18:19 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 255 seconds) |
| 22:20:43 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 22:31:47 | → | leah2 joins (~leah@vuxu.org) |
| 22:54:15 | × | acidjnk_new quits (~acidjnk@p200300d6e714dc5559a3cb0167348b6b.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 23:02:04 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 23:03:12 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:37b:d1cb:abb:b85d) |
| 23:07:18 | → | ocra8 joins (~ocra8@user/ocra8) |
| 23:23:33 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 23:27:40 | → | pavonia joins (~user@user/siracusa) |
| 23:31:11 | → | solaire joins (~solaire@syn-067-052-091-058.biz.spectrum.com) |
| 23:37:01 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:42:51 | × | solaire quits (~solaire@syn-067-052-091-058.biz.spectrum.com) (Ping timeout: 264 seconds) |
| 23:43:32 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 23:43:37 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 23:44:54 | Lord_of_Life_ | is now known as Lord_of_Life |
| 23:48:51 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 264 seconds) |
| 23:57:43 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
All times are in UTC on 2024-06-15.