| 2026-04-13 00:14:55 +0000 | acidjnk_new3 | (~acidjnk@p200300d6e700e58684295e76a51b504e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 2026-04-13 00:15:33 +0000 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 2026-04-13 00:23:42 +0000 | Angelz | (Angelz@user/angelz) (Ping timeout: 244 seconds) |
| 2026-04-13 00:26:19 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 00:33:08 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-04-13 00:35:54 +0000 | foul_owl | (~kerry@94.156.149.97) foul_owl |
| 2026-04-13 00:43:40 +0000 | Angelz | (Angelz@angelz.oddprotocol.org) |
| 2026-04-13 00:45:53 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 00:46:01 +0000 | infinity0 | (~infinity0@pwned.gg) (Ping timeout: 248 seconds) |
| 2026-04-13 00:50:26 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-04-13 00:53:29 +0000 | Angelz | (Angelz@angelz.oddprotocol.org) (Ping timeout: 248 seconds) |
| 2026-04-13 00:54:36 +0000 | xff0x | (~xff0x@ai112096.d.east.v6connect.net) (Ping timeout: 244 seconds) |
| 2026-04-13 01:06:35 +0000 | infinity0 | (~infinity0@pwned.gg) infinity0 |
| 2026-04-13 01:14:09 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 01:15:30 +0000 | Angelz | (Angelz@Angelz.oddprotocol.org) |
| 2026-04-13 01:19:05 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-04-13 01:20:54 +0000 | DetourNetworkUK | (~DetourNet@user/DetourNetworkUK) (Ping timeout: 268 seconds) |
| 2026-04-13 01:23:58 +0000 | Angelz | (Angelz@Angelz.oddprotocol.org) (Ping timeout: 276 seconds) |
| 2026-04-13 01:24:46 +0000 | DetourNetworkUK | (~DetourNet@user/DetourNetworkUK) DetourNetworkUK |
| 2026-04-13 01:30:24 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 01:35:07 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-04-13 01:42:17 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-04-13 01:44:12 +0000 | tremon | (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 2026-04-13 01:46:47 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 01:51:57 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2026-04-13 01:52:42 +0000 | newmind | (~newmind@user/newmind) (Ping timeout: 265 seconds) |
| 2026-04-13 01:54:30 +0000 | newmind | (~newmind@user/newmind) newmind |
| 2026-04-13 02:02:37 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 02:07:02 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-04-13 02:11:48 +0000 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
| 2026-04-13 02:19:03 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 02:19:59 +0000 | jmcantrell_ | jmcantrell |
| 2026-04-13 02:25:48 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-04-13 02:36:37 +0000 | Angelz | (Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) |
| 2026-04-13 02:46:31 +0000 | vidak | (~vidak@2407:e400:7800:2c01:c4db:d9c4:aac4:94f6) (Ping timeout: 276 seconds) |
| 2026-04-13 02:54:43 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 02:54:58 +0000 | Angelz | (Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) (Ping timeout: 276 seconds) |
| 2026-04-13 02:59:56 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-04-13 03:01:42 +0000 | jmcantrell | (~weechat@user/jmcantrell) (Ping timeout: 244 seconds) |
| 2026-04-13 03:02:22 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) lisbeths |
| 2026-04-13 03:12:04 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 03:16:31 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-04-13 03:25:26 +0000 | Angelz | (Angelz@angelz.oddprotocol.org) |
| 2026-04-13 03:27:21 +0000 | divlamir | (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 2026-04-13 03:27:31 +0000 | divlamir | (~divlamir@user/divlamir) divlamir |
| 2026-04-13 03:30:31 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 03:34:06 +0000 | Angelz | (Angelz@angelz.oddprotocol.org) (Ping timeout: 268 seconds) |
| 2026-04-13 03:34:46 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-04-13 03:43:49 +0000 | rekahsoft | (~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) (Remote host closed the connection) |
| 2026-04-13 03:47:19 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 03:51:46 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-04-13 04:03:54 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 04:11:01 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2026-04-13 04:21:00 +0000 | slomp_ | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds) |
| 2026-04-13 04:23:58 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 04:28:31 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-04-13 04:35:59 +0000 | michalz | (~michalz@185.246.207.193) |
| 2026-04-13 04:38:40 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 04:40:48 +0000 | machinedgod | (~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 255 seconds) |
| 2026-04-13 04:46:23 +0000 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2026-04-13 04:48:09 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 04:55:47 +0000 | merijn | (~merijn@62.45.136.136) merijn |
| 2026-04-13 05:00:43 +0000 | merijn | (~merijn@62.45.136.136) (Ping timeout: 265 seconds) |
| 2026-04-13 05:02:08 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 05:07:13 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 268 seconds) |
| 2026-04-13 05:12:48 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 05:17:10 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-04-13 05:19:00 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 05:19:34 +0000 | endor | (~endor@user/endor) endor |
| 2026-04-13 05:21:15 +0000 | endor | (~endor@user/endor) (Quit: Leaving) |
| 2026-04-13 05:21:38 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2026-04-13 05:28:30 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds) |
| 2026-04-13 05:28:51 +0000 | Angelz | (Angelz@angelz.oddprotocol.org) |
| 2026-04-13 05:30:42 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 05:33:45 +0000 | Angelz | (Angelz@angelz.oddprotocol.org) (Ping timeout: 246 seconds) |
| 2026-04-13 05:35:12 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-04-13 05:47:20 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 05:52:06 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-04-13 05:52:08 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-04-13 05:55:02 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) lisbeths |
| 2026-04-13 05:56:21 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 05:56:44 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 06:01:29 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 272 seconds) |
| 2026-04-13 06:02:07 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-04-13 06:02:40 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds) |
| 2026-04-13 06:09:56 +0000 | mra | (~mra@172-105-19-44.ip.linodeusercontent.com) mra |
| 2026-04-13 06:12:11 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 06:13:55 +0000 | takuan | (~takuan@d8D86B9E9.access.telenet.be) |
| 2026-04-13 06:17:22 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 06:24:33 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 06:28:43 +0000 | Angelz | (Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) |
| 2026-04-13 06:30:45 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 06:31:46 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 06:34:31 +0000 | czan | (~czan@user/mange) (Quit: Zzz...) |
| 2026-04-13 06:35:21 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-04-13 06:37:14 +0000 | tromp | (~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) |
| 2026-04-13 06:42:26 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-04-13 06:46:17 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 06:47:08 +0000 | CiaoSen | (~Jura@p549cbfb1.dip0.t-ipconnect.de) CiaoSen |
| 2026-04-13 06:50:12 +0000 | synchromesh | (~john@2406:5a00:2412:2c00:f13a:623d:2f3c:c3c6) (Read error: Connection reset by peer) |
| 2026-04-13 06:51:12 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-04-13 06:51:12 +0000 | synchromesh | (~john@2406:5a00:2412:2c00:f13a:623d:2f3c:c3c6) synchromesh |
| 2026-04-13 06:54:53 +0000 | wootehfoot | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 2026-04-13 06:55:16 +0000 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
| 2026-04-13 06:57:04 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
| 2026-04-13 06:57:32 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 07:00:18 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 07:02:43 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-04-13 07:05:18 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 256 seconds) |
| 2026-04-13 07:05:47 +0000 | Angelz | (Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) (Changing host) |
| 2026-04-13 07:05:47 +0000 | Angelz | (Angelz@user/angelz) angelz |
| 2026-04-13 07:15:29 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 268 seconds) |
| 2026-04-13 07:21:28 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 07:27:49 +0000 | CiaoSen | (~Jura@p549cbfb1.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 2026-04-13 07:29:04 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 245 seconds) |
| 2026-04-13 07:38:20 +0000 | <haskellbridge> | <Liamzee> thanks probie i guess, I finally understand why everyone uses nix |
| 2026-04-13 07:39:14 +0000 | <haskellbridge> | <Liamzee> if you want to microservices haskell, you need docker compose, kubernetes, or nix, docker compose is fragile as all hell with Haskell, and the pain is sufficient to get people to move to nix |
| 2026-04-13 07:40:48 +0000 | phm | (~peter@fsf/member/phm) (Ping timeout: 255 seconds) |
| 2026-04-13 07:41:19 +0000 | phm | (~peter@fsf/member/phm) phm |
| 2026-04-13 07:41:52 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 07:52:54 +0000 | merijn | (~merijn@77.242.116.146) merijn |
| 2026-04-13 07:55:30 +0000 | leppard | (~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline |
| 2026-04-13 08:01:19 +0000 | leppard | (~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
| 2026-04-13 08:01:38 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2026-04-13 08:02:14 +0000 | leppard | (~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline |
| 2026-04-13 08:06:29 +0000 | sapphire-arches | (~sapphire-@user/sapphire-arches) (Quit: sapphire-arches) |
| 2026-04-13 08:07:31 +0000 | emmanuelux | (~em@user/emmanuelux) (Quit: bye) |
| 2026-04-13 08:12:12 +0000 | alter2000 | (~alter2000@user/alter2000) alter2000 |
| 2026-04-13 08:17:20 +0000 | __monty__ | (~toonn@user/toonn) toonn |
| 2026-04-13 08:17:42 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds) |
| 2026-04-13 08:24:18 +0000 | tromp | (~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-04-13 08:29:24 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 08:31:51 +0000 | tromp | (~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) |
| 2026-04-13 08:38:39 +0000 | srazkvt | (~sarah@user/srazkvt) srazkvt |
| 2026-04-13 08:47:49 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 245 seconds) |
| 2026-04-13 08:50:12 +0000 | tromp | (~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-04-13 08:54:04 +0000 | ft | (~ft@p508db287.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 2026-04-13 09:01:53 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 09:06:26 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 09:09:24 +0000 | acidjnk_new3 | (~acidjnk@p200300d6e700e5867783b930023161c8.dip0.t-ipconnect.de) |
| 2026-04-13 09:15:20 +0000 | Square | (~Square4@user/square) Square |
| 2026-04-13 09:18:12 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 09:22:36 +0000 | puke | (~puke@user/puke) (Ping timeout: 250 seconds) |
| 2026-04-13 09:28:38 +0000 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
| 2026-04-13 09:28:56 +0000 | sixfourtwelve | (~ethanmorg@static.82.129.225.46.clients.your-server.de) |
| 2026-04-13 09:35:22 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 276 seconds) |
| 2026-04-13 09:55:13 +0000 | tromp | (~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) |
| 2026-04-13 09:55:31 +0000 | karenw | (~karenw@user/karenw) karenw |
| 2026-04-13 10:00:54 +0000 | acidjnk_new | (~acidjnk@p200300d6e700e507ef1cadbb02cce561.dip0.t-ipconnect.de) |
| 2026-04-13 10:02:16 +0000 | karenw | (~karenw@user/karenw) (Quit: Deep into that darkness peering...) |
| 2026-04-13 10:03:07 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 10:04:02 +0000 | acidjnk_new3 | (~acidjnk@p200300d6e700e5867783b930023161c8.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2026-04-13 10:05:12 +0000 | DetourNe- | (~DetourNet@user/DetourNetworkUK) DetourNetworkUK |
| 2026-04-13 10:05:14 +0000 | DetourNetworkUK | (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer) |
| 2026-04-13 10:05:28 +0000 | tremon | (~tremon@83.80.159.219) tremon |
| 2026-04-13 10:07:29 +0000 | DetourNe- | DetourNetworkUK |
| 2026-04-13 10:08:09 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 246 seconds) |
| 2026-04-13 10:17:16 +0000 | tromp | (~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) (Read error: Connection reset by peer) |
| 2026-04-13 10:19:59 +0000 | danza | (~danza@user/danza) danza |
| 2026-04-13 10:34:46 +0000 | danza | (~danza@user/danza) (Remote host closed the connection) |
| 2026-04-13 10:37:47 +0000 | CiaoSen | (~Jura@p549cbfb1.dip0.t-ipconnect.de) CiaoSen |
| 2026-04-13 10:48:50 +0000 | Fischmiep | (~Fischmiep@user/Fischmiep) (Quit: ZNC - https://znc.in) |
| 2026-04-13 10:49:01 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 272 seconds) |
| 2026-04-13 10:49:09 +0000 | Fischmiep | (~Fischmiep@user/Fischmiep) Fischmiep |
| 2026-04-13 10:51:34 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 10:56:31 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 244 seconds) |
| 2026-04-13 11:08:20 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 11:14:49 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 11:20:13 +0000 | fp` | (~user@staff237.kora-dyn.aalto.fi) |
| 2026-04-13 11:21:26 +0000 | arandombit | (~arandombi@2a02:2455:8656:7100:402b:b9d0:7e1b:e24b) |
| 2026-04-13 11:21:26 +0000 | arandombit | (~arandombi@2a02:2455:8656:7100:402b:b9d0:7e1b:e24b) (Changing host) |
| 2026-04-13 11:21:26 +0000 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-04-13 11:21:36 +0000 | <fp`> | I'd like some help naming a function. It's like scanr in that it yields recursive subresults, but it also puts those subresults into the accumulator of the folding function. I came up with arrayScanr, but I think it doesn't capture that the folding function got a change. |
| 2026-04-13 11:24:16 +0000 | <alter2000> | would it help to take a page out of Fennel's playbook? that sounds like scanr + fennel's (->) |
| 2026-04-13 11:24:33 +0000 | <alter2000> | ctx https://fennel-lang.org/reference#------and---threading-macros |
| 2026-04-13 11:27:14 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 11:28:08 +0000 | CiaoSen | (~Jura@p549cbfb1.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 2026-04-13 11:28:39 +0000 | <fp`> | Yeah that seems to be the thing. Fennel calls them threading macros, so would threadedScanr make sense? I'd fear though that that sounds concurrency-related. |
| 2026-04-13 11:29:44 +0000 | <alter2000> | hmm fair point, it does but given the context it doesn't sound likely; or are you actually involving threads in your library? |
| 2026-04-13 11:32:13 +0000 | <mauke> | :t scanr |
| 2026-04-13 11:32:13 +0000 | <lambdabot> | (a -> b -> b) -> b -> [a] -> [b] |
| 2026-04-13 11:32:16 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 244 seconds) |
| 2026-04-13 11:32:36 +0000 | <mauke> | :t mapAccumL |
| 2026-04-13 11:32:37 +0000 | <lambdabot> | Traversable t => (s -> a -> (s, b)) -> s -> t a -> (s, t b) |
| 2026-04-13 11:32:39 +0000 | <fp`> | No, I'm just doing some linear algebra, shouldn't be any concurrency in sight |
| 2026-04-13 11:34:51 +0000 | <alter2000> | then I'd say it's a safe bet; chances are a good chunk of your potential users are already somewhat familiar with lisp style parameter/argument threading |
| 2026-04-13 11:39:36 +0000 | haritz | (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) |
| 2026-04-13 11:39:36 +0000 | haritz | (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host) |
| 2026-04-13 11:39:36 +0000 | haritz | (~hrtz@user/haritz) haritz |
| 2026-04-13 11:45:31 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 11:50:10 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 11:55:45 +0000 | karenw | (~karenw@user/karenw) karenw |
| 2026-04-13 11:58:13 +0000 | karenw | (~karenw@user/karenw) (Client Quit) |
| 2026-04-13 12:03:51 +0000 | oats | (~oats@user/oats) (Read error: Connection reset by peer) |
| 2026-04-13 12:04:06 +0000 | oats | (~oats@user/oats) oats |
| 2026-04-13 12:04:18 +0000 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 244 seconds) |
| 2026-04-13 12:18:02 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 12:24:17 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 252 seconds) |
| 2026-04-13 12:27:37 +0000 | <merijn> | fp`: You know what's unironically really good at coming up with names from a description like that? |
| 2026-04-13 12:27:40 +0000 | <merijn> | ChatGPT |
| 2026-04-13 12:31:01 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 2026-04-13 12:35:20 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 12:40:09 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 12:47:39 +0000 | rainbyte | (~rainbyte@181.47.219.3) (Read error: Connection reset by peer) |
| 2026-04-13 12:48:54 +0000 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-04-13 12:50:44 +0000 | rainbyte | (~rainbyte@181.47.219.3) rainbyte |
| 2026-04-13 12:53:21 +0000 | <fp`> | merijn: Sure, but I'd rather engage with a community that uses the language, learn the conventions from them, and learn about ancillary tools, like in this I learned about Fennel. The answer's not that important to me, the process is the main thing. |
| 2026-04-13 12:53:59 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 12:54:36 +0000 | <fp`> | ancillary knowledge more generally, really. Not just tools. |
| 2026-04-13 12:58:05 +0000 | xff0x | (~xff0x@2405:6580:b080:900:64fb:89e9:b5c1:12b3) |
| 2026-04-13 13:00:45 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds) |
| 2026-04-13 13:02:03 +0000 | rekahsoft | (~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) rekahsoft |
| 2026-04-13 13:11:24 +0000 | arandombit | (~arandombi@user/arandombit) (Remote host closed the connection) |
| 2026-04-13 13:13:20 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 13:14:06 +0000 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-04-13 13:18:29 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 272 seconds) |
| 2026-04-13 13:19:33 +0000 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 268 seconds) |
| 2026-04-13 13:19:45 +0000 | Googulator | (~Googulato@94-21-172-213.pool.digikabel.hu) |
| 2026-04-13 13:30:14 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 13:34:57 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds) |
| 2026-04-13 13:50:00 +0000 | karenw | (~karenw@user/karenw) karenw |
| 2026-04-13 13:50:01 +0000 | fp` | (~user@staff237.kora-dyn.aalto.fi) (Ping timeout: 248 seconds) |
| 2026-04-13 13:51:00 +0000 | Googulator | (~Googulato@94-21-172-213.pool.digikabel.hu) (Quit: Client closed) |
| 2026-04-13 13:51:24 +0000 | Googulator | (~Googulato@94-21-172-213.pool.digikabel.hu) |
| 2026-04-13 14:00:00 +0000 | arandombit | (~arandombi@2a02:2455:8656:7100:55bf:4eed:c642:43c4) |
| 2026-04-13 14:00:00 +0000 | arandombit | (~arandombi@2a02:2455:8656:7100:55bf:4eed:c642:43c4) (Changing host) |
| 2026-04-13 14:00:00 +0000 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-04-13 14:03:16 +0000 | arandombit | (~arandombi@user/arandombit) (Remote host closed the connection) |
| 2026-04-13 14:05:02 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 14:06:40 +0000 | myxos | (~myxos@67-1-178-42.tcso.qwest.net) (Remote host closed the connection) |
| 2026-04-13 14:10:07 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 268 seconds) |
| 2026-04-13 14:12:56 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 14:14:00 +0000 | myxos | (~myxos@67-1-178-42.tcso.qwest.net) myxokephale |
| 2026-04-13 14:17:42 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds) |
| 2026-04-13 14:18:50 +0000 | potatomuncher|2 | (~kvirc@user/potatomuncher) potatomuncher |
| 2026-04-13 14:21:08 +0000 | poscat0x04 | (~poscat@user/poscat) poscat |
| 2026-04-13 14:22:50 +0000 | poscat | (~poscat@user/poscat) (Ping timeout: 268 seconds) |
| 2026-04-13 14:31:09 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 14:38:29 +0000 | bggd | (~bgg@user/bggd) (Remote host closed the connection) |
| 2026-04-13 14:38:55 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 272 seconds) |
| 2026-04-13 14:39:04 +0000 | Googulator | (~Googulato@94-21-172-213.pool.digikabel.hu) (Quit: Client closed) |
| 2026-04-13 14:39:20 +0000 | Googulator | (~Googulato@94-21-172-213.pool.digikabel.hu) |
| 2026-04-13 14:40:54 +0000 | weary-traveler | (~user@user/user363627) user363627 |
| 2026-04-13 14:41:36 +0000 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
| 2026-04-13 14:43:23 +0000 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
| 2026-04-13 14:49:55 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 14:55:05 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds) |
| 2026-04-13 15:01:29 +0000 | fp1 | (~Thunderbi@87-95-80-117.bb.dnainternet.fi) fp |
| 2026-04-13 15:02:15 +0000 | danza | (~danza@user/danza) danza |
| 2026-04-13 15:02:15 +0000 | fp1 | (~Thunderbi@87-95-80-117.bb.dnainternet.fi) (Read error: Connection reset by peer) |
| 2026-04-13 15:05:03 +0000 | machinedgod | (~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod |
| 2026-04-13 15:06:37 +0000 | synchromesh | (~john@2406:5a00:2412:2c00:f13a:623d:2f3c:c3c6) (Read error: Connection reset by peer) |
| 2026-04-13 15:07:34 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 15:08:00 +0000 | synchromesh | (~john@2406:5a00:2412:2c00:2c29:cc68:8842:5c05) synchromesh |
| 2026-04-13 15:08:37 +0000 | sixfourtwelve | (~ethanmorg@static.82.129.225.46.clients.your-server.de) () |
| 2026-04-13 15:13:05 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 245 seconds) |
| 2026-04-13 15:19:47 +0000 | Milan_Vanca | (~milan@user/Milan-Vanca:32634) Milan_Vanca |
| 2026-04-13 15:25:49 +0000 | <Milan_Vanca> | Hello I have found this statement in book "Evaluating something to normal form involves traversing the whole of its structure, so you should bear in mind that it is O(n) for a structure of size n, whereas seq is O(1). It is therefore a good idea to avoid repeated uses of force or deepseq on the same data." Is that correct? I thought that in ghc "results of evalutaions" are shared. So force |
| 2026-04-13 15:25:51 +0000 | <Milan_Vanca> | longList; force longList should not traverse list 2 times |
| 2026-04-13 15:26:12 +0000 | alter2000 | (~alter2000@user/alter2000) (Read error: Connection reset by peer) |
| 2026-04-13 15:27:03 +0000 | <[exa]> | Milan_Vanca: the issue with `deepseq` is that it doesn't know if there's a thunk somewhere in the middle or not, so it has to traverse there again and again |
| 2026-04-13 15:27:54 +0000 | <[exa]> | (by having a head-normal data structure there's no way to tell if it points to a thunk, and the information that it was "already checked" isn't stored anywhere) |
| 2026-04-13 15:29:16 +0000 | <[exa]> | BUT you can memoize the result of `deepseq` in a `let` and then you can use as many times you want and it's always going to be memoized as fully evaluated. |
| 2026-04-13 15:29:39 +0000 | <[exa]> | (If confusing I can try to draw a picture :D ) |
| 2026-04-13 15:30:15 +0000 | slomp | (~slomp@47-158-199-90.lsan.ca.frontiernet.net) |
| 2026-04-13 15:31:23 +0000 | v0id_7 | (~v0id_7@user/v0id-7:62772) v0id_7 |
| 2026-04-13 15:32:17 +0000 | <Milan_Vanca> | Isn't that "shortcoming" of GHC to not remember that recursive datastructure was evaluated to NF completly? |
| 2026-04-13 15:32:26 +0000 | <Milan_Vanca> | Maybe it is infeasible to do so? |
| 2026-04-13 15:33:39 +0000 | <Milan_Vanca> | For that deepseq would need to be implemented in GHC and not just in term of seq maybe.. |
| 2026-04-13 15:34:33 +0000 | <Milan_Vanca> | [exa]: And maybe picture would clarify it for me. Could you please draw a picture? |
| 2026-04-13 15:36:00 +0000 | <__monty__> | Wouldn't that end up with a traversal of all the NF datastructures known about instead of the datastructure you actually care about? |
| 2026-04-13 15:39:50 +0000 | <Milan_Vanca> | __monty__: I don't think so.. we write force longList1 so that evaluates it all the way down right? or maybe only to [thunk, thunk] from thunk:thunk and not [1, 2] ? |
| 2026-04-13 15:41:52 +0000 | <Milan_Vanca> | Yeah it is probably like that...there might not be need to evaluate further just the list |
| 2026-04-13 15:44:20 +0000 | <c_wraith> | I wouldn't call it a shortcoming |
| 2026-04-13 15:45:42 +0000 | <c_wraith> | right now, a value at run time has states for "this has been evaluated to a constructor" and "this hasn't been evaluated". |
| 2026-04-13 15:46:11 +0000 | <c_wraith> | Adding a state for "this has been fully evaluated" would add overhead to every single (lifted) value in memory |
| 2026-04-13 15:49:36 +0000 | <c_wraith> | Especially since it's not actually clear when that flag would be set. Would `rnf' need special RTS integration to set it specially? Would it check every time a value is evaluated if that makes some parent fully evaluated? |
| 2026-04-13 15:51:44 +0000 | Guest62 | (~Guest62@p200300ca8f398000a276c2fd551b1612.dip0.t-ipconnect.de) |
| 2026-04-13 15:52:46 +0000 | <c_wraith> | This isn't exactly automatic memoization, but it ends up sharing all the same issues. |
| 2026-04-13 15:54:40 +0000 | <c_wraith> | My advice is to never actually use `rnf' in real code. It's a handy debugging tool if you can't find the source of unevaluated expressions in your program, but it's not a good solution. |
| 2026-04-13 15:54:45 +0000 | <mauke> | a two-element list looks like x1@((:) x2 x3@((:) x4 x5)). each of those x's can hide more unevaluated work |
| 2026-04-13 15:55:59 +0000 | <[exa]> | Milan_Vanca: ok so I'll draw a picture in IRC :D |
| 2026-04-13 15:56:12 +0000 | <c_wraith> | Either prevent nested buildup of unevaluated expressions in the first place, or use an unlifted data type if you can't be bothered. |
| 2026-04-13 15:56:18 +0000 | <[exa]> | Milan_Vanca: the unevaluated problem looks like: D1 --> Thunk1 |
| 2026-04-13 15:56:41 +0000 | <[exa]> | Milan_Vanca: if you deepseq it, you can get something like: D1 --> D2 --> D3 |
| 2026-04-13 15:57:05 +0000 | <[exa]> | Milan_Vanca: now, if you deepseq it again, the deepseq only sees: D1 --> (something unknown behind a pointer) |
| 2026-04-13 15:57:43 +0000 | <[exa]> | Milan_Vanca: without traversing the pointer it is not sure if there's anything to evaluate, in turn it needs to traverse all of these pointers |
| 2026-04-13 15:58:07 +0000 | <[exa]> | and there's `n` such pointers. It's probably faster than the first deepseq esp. if the computation was "hard", but still `n` pointers. |
| 2026-04-13 15:59:54 +0000 | jmcantrell_ | (~weechat@user/jmcantrell) (Ping timeout: 244 seconds) |
| 2026-04-13 16:00:30 +0000 | danza | (~danza@user/danza) (Remote host closed the connection) |
| 2026-04-13 16:01:52 +0000 | <[exa]> | Milan_Vanca: anyway you could implement some magical mark for "this has been deepseq'd" but there would be overhead and I don't see people going that way especially since the "right way" is to just make sure you don't accumulate too much thunk material in the first place |
| 2026-04-13 16:04:54 +0000 | <Milan_Vanca> | Ty guyz...I still don't fully understand. It's probably better to just continue learning. I will try to remember prevent accumulation of thunks. :) |
| 2026-04-13 16:06:19 +0000 | <mauke> | > length [error "x", error "y"] |
| 2026-04-13 16:06:20 +0000 | <lambdabot> | 2 |
| 2026-04-13 16:06:32 +0000 | <mauke> | > [error "x", error "y"] `seq` "WHNF" |
| 2026-04-13 16:06:34 +0000 | <lambdabot> | "WHNF" |
| 2026-04-13 16:10:03 +0000 | <yin> | i just found out that hlint doesn't iterate through refactors |
| 2026-04-13 16:10:52 +0000 | <yin> | eg: it suggests `if True then False else True` -> `not True` |
| 2026-04-13 16:10:55 +0000 | <dutchie> | https://github.com/ndmitchell/hlint?tab=readme-ov-file#why-are-hints-not-applied-recursively |
| 2026-04-13 16:11:08 +0000 | polykernel | (~polykerne@user/polykernel) (Remote host closed the connection) |
| 2026-04-13 16:11:28 +0000 | polykernel | (~polykerne@user/polykernel) polykernel |
| 2026-04-13 16:11:54 +0000 | <mauke> | Milan_Vanca: picture: https://i.imgur.com/yuu9hiq.png :-D |
| 2026-04-13 16:12:11 +0000 | <yin> | dutchie: totally fair |
| 2026-04-13 16:12:24 +0000 | <__monty__> | How does it get to `not True`? Surely it's just eliminating the else-branch because of the tautological test? |
| 2026-04-13 16:12:56 +0000 | <mauke> | if X then False else True --> not X |
| 2026-04-13 16:13:25 +0000 | <__monty__> | Is that really more general as a pattern? |
| 2026-04-13 16:13:38 +0000 | <mauke> | does it have to be? |
| 2026-04-13 16:13:52 +0000 | <yin> | it improves lazyness |
| 2026-04-13 16:14:35 +0000 | <__monty__> | How? |
| 2026-04-13 16:16:09 +0000 | <Milan_Vanca> | > deepseq [error "x", error "y"] "NF" |
| 2026-04-13 16:16:10 +0000 | <lambdabot> | Variable not in scope: deepseq :: [a0] -> String -> t |
| 2026-04-13 16:17:17 +0000 | <mauke> | @let import Control.DeepSeq |
| 2026-04-13 16:17:18 +0000 | <lambdabot> | /sandbox/tmp/.L.hs:50:1: error: [GHC-87110] |
| 2026-04-13 16:17:18 +0000 | <lambdabot> | Could not load module ‘Control.DeepSeq’. |
| 2026-04-13 16:17:18 +0000 | <lambdabot> | It is a member of the hidden package ‘deepseq-1.5.0.0’. |
| 2026-04-13 16:18:48 +0000 | merijn | (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 2026-04-13 16:20:16 +0000 | <janus> | % import Control.DeepSeq |
| 2026-04-13 16:20:16 +0000 | <yahb2> | <no output> |
| 2026-04-13 16:20:35 +0000 | <janus> | % deepseq [ error "x", error "y"] "NF" |
| 2026-04-13 16:20:35 +0000 | <yahb2> | <interactive>:7:1: error: [GHC-39999] ; • Ambiguous type variable ‘a0’ arising from a use of ‘deepseq’ ; prevents the constraint ‘(NFData a0)’ from being solved. ; Probable fix: use... |
| 2026-04-13 16:21:05 +0000 | <mauke> | % deepseq [ error "x", error "y" :: Int] "NF" |
| 2026-04-13 16:21:05 +0000 | <yahb2> | *** Exception: x ; ; HasCallStack backtrace: ; error, called at <interactive>:9:11 in interactive:Ghci3 |
| 2026-04-13 16:22:10 +0000 | <Milan_Vanca> | let a = 1 + 1 :: Int |
| 2026-04-13 16:22:15 +0000 | <Milan_Vanca> | > let a = 1 + 1 :: Int |
| 2026-04-13 16:22:16 +0000 | <lambdabot> | not an expression: ‘let a = 1 + 1 :: Int’ |
| 2026-04-13 16:22:38 +0000 | <Milan_Vanca> | Ah ok.. so I can't do this here :D |
| 2026-04-13 16:22:40 +0000 | <Milan_Vanca> | nvm |
| 2026-04-13 16:22:51 +0000 | <janus> | @let a = 1 + 1 :: Int |
| 2026-04-13 16:22:51 +0000 | <mauke> | > let a = 1 + 1 :: Int in a |
| 2026-04-13 16:22:51 +0000 | <lambdabot> | Defined. |
| 2026-04-13 16:22:52 +0000 | <lambdabot> | 2 |
| 2026-04-13 16:23:04 +0000 | <mauke> | > a |
| 2026-04-13 16:23:05 +0000 | <lambdabot> | Ambiguous occurrence ‘a’. |
| 2026-04-13 16:23:05 +0000 | <lambdabot> | It could refer to |
| 2026-04-13 16:23:05 +0000 | <lambdabot> | either ‘Debug.SimpleReflect.a’, |
| 2026-04-13 16:23:07 +0000 | <mauke> | @undefine |
| 2026-04-13 16:23:07 +0000 | <lambdabot> | Undefined. |
| 2026-04-13 16:23:40 +0000 | <mauke> | > (a + 1) ^ 2 |
| 2026-04-13 16:23:41 +0000 | <lambdabot> | (a + 1) * (a + 1) |
| 2026-04-13 16:24:34 +0000 | <janus> | what's the difference between using @let and '> let' ? |
| 2026-04-13 16:25:17 +0000 | <mauke> | the latter introduces an expression |
| 2026-04-13 16:25:39 +0000 | <mauke> | the former adds a top-level statement to the execution environment |
| 2026-04-13 16:26:21 +0000 | <janus> | yahb is just ghci right? so you use lambdabot so that you can get SimpleReflect? |
| 2026-04-13 16:26:27 +0000 | <mauke> | > (let map = 20 in map + 1) * 2 |
| 2026-04-13 16:26:28 +0000 | <lambdabot> | 42 |
| 2026-04-13 16:28:36 +0000 | karenw | (~karenw@user/karenw) (Remote host closed the connection) |
| 2026-04-13 16:30:02 +0000 | <Milan_Vanca> | @let main = print "Hello" |
| 2026-04-13 16:30:04 +0000 | <lambdabot> | Defined. |
| 2026-04-13 16:30:06 +0000 | <Milan_Vanca> | @:main |
| 2026-04-13 16:30:06 +0000 | <lambdabot> | Here we are, Pinky--at the dawn of time! |
| 2026-04-13 16:30:18 +0000 | <Milan_Vanca> | @:sprint main |
| 2026-04-13 16:30:18 +0000 | <lambdabot> | Unknown command, try @list |
| 2026-04-13 16:30:42 +0000 | <mauke> | lambdabot isn't ghci :-) |
| 2026-04-13 16:30:52 +0000 | <__monty__> | You can experiment with lambdabot in a query, FYI. |
| 2026-04-13 16:31:10 +0000 | <yin> | __monty__: after considering it, i don't think it does after all |
| 2026-04-13 16:31:35 +0000 | <Milan_Vanca> | __monty__: what query? |
| 2026-04-13 16:31:40 +0000 | <EvanR> | > (a + 1) * (a + 1) |
| 2026-04-13 16:31:41 +0000 | <lambdabot> | (a + 1) * (a + 1) |
| 2026-04-13 16:31:48 +0000 | <EvanR> | a^2 + 2*a + 1 |
| 2026-04-13 16:31:58 +0000 | <__monty__> | Milan_Vanca: AKA a private message. |
| 2026-04-13 16:32:00 +0000 | <mauke> | Milan_Vanca: I'm not sure about weechat, but try "/query lambdabot" |
| 2026-04-13 16:32:10 +0000 | <Milan_Vanca> | Ah thank you |
| 2026-04-13 16:32:38 +0000 | <Milan_Vanca> | mauke: You can see my client? :D |
| 2026-04-13 16:33:01 +0000 | <mauke> | I asked it :-) |
| 2026-04-13 16:33:06 +0000 | <mauke> | by sending a CTCP VERSION request |
| 2026-04-13 16:34:33 +0000 | <__monty__> | yin: I guess the pattern rolls out of the definition of `not` a bit more readily? The assumption being that people are less likely to write a tautological test than they are to spell out negation? |
| 2026-04-13 16:35:20 +0000 | <mauke> | Milan_Vanca: I don't see a specific weechat command for it. try "/ctcp mauke version" |
| 2026-04-13 16:35:57 +0000 | karenw | (~karenw@user/karenw) karenw |
| 2026-04-13 16:36:42 +0000 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
| 2026-04-13 16:43:53 +0000 | hellwolf | (~user@7530-0dab-5d73-cf2b-0f00-4d40-07d0-2001.sta.estpak.ee) (Ping timeout: 248 seconds) |
| 2026-04-13 16:46:14 +0000 | m | (~travltux@user/travltux) (Quit: WeeChat 4.7.2) |
| 2026-04-13 16:46:22 +0000 | <Milan_Vanca> | Like I was able to send command but I see no response |
| 2026-04-13 16:47:00 +0000 | <Milan_Vanca> | mauke: No sorry, I see it just in different "window" |
| 2026-04-13 16:47:02 +0000 | <mauke> | I can see your requests in my status window |
| 2026-04-13 16:47:05 +0000 | <mauke> | ah :-) |
| 2026-04-13 16:47:49 +0000 | <Milan_Vanca> | ty that is new command I learned today :) |
| 2026-04-13 16:48:27 +0000 | <Milan_Vanca> | But enough fun.. lets go back to studying :D |
| 2026-04-13 16:48:56 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
| 2026-04-13 16:49:19 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
| 2026-04-13 16:49:34 +0000 | hellwolf | (~user@17e7-d9b7-b727-51a4-0f00-4d40-07d0-2001.sta.estpak.ee) hellwolf |
| 2026-04-13 17:01:04 +0000 | Square3 | (~Square@user/square) Square |
| 2026-04-13 17:03:52 +0000 | Square | (~Square4@user/square) (Ping timeout: 244 seconds) |
| 2026-04-13 17:12:49 +0000 | Xe | (~Xe@perl/impostor/xe) (Quit: ZNC 1.10.1 - https://znc.in) |
| 2026-04-13 17:14:47 +0000 | ft | (~ft@p508db287.dip0.t-ipconnect.de) ft |
| 2026-04-13 17:16:09 +0000 | Xe | (~Xe@perl/impostor/xe) Xe |
| 2026-04-13 17:18:33 +0000 | jmcantrell_ | (~weechat@user/jmcantrell) (Ping timeout: 248 seconds) |
| 2026-04-13 17:37:03 +0000 | shapr | (~user@130.44.148.32) shapr |
| 2026-04-13 17:37:32 +0000 | <shapr> | Huh, channel got smaller. |
| 2026-04-13 17:37:49 +0000 | <shapr> | maybe it's just the right size now? |
| 2026-04-13 17:37:59 +0000 | <shapr> | Oh hey, can I run Haskell on my keyboard? |
| 2026-04-13 17:42:42 +0000 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
| 2026-04-13 17:42:59 +0000 | gmg | (~user@user/gehmehgeh) gehmehgeh |
| 2026-04-13 17:43:04 +0000 | <shapr> | How much OS do I need to run MicroHS? 🤔 |
| 2026-04-13 17:45:30 +0000 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
| 2026-04-13 17:45:44 +0000 | <janus> | i think the target shouldn't need much OS since you can easily remove POSIX ffi calls and such |
| 2026-04-13 17:46:00 +0000 | <janus> | not sure whether you refer to host or target |
| 2026-04-13 17:46:16 +0000 | <shapr> | It's a silly idea anyway. |
| 2026-04-13 17:46:19 +0000 | <shapr> | Hello janus! |
| 2026-04-13 17:46:25 +0000 | ChanServ | +o janus |
| 2026-04-13 17:46:29 +0000 | <janus> | hi shapr |
| 2026-04-13 17:46:31 +0000 | <shapr> | you have THE POWER! |
| 2026-04-13 17:46:40 +0000 | <janus> | oh my |
| 2026-04-13 17:46:43 +0000 | <Rembane> | shapr: Please run Haskell on your keyboard! |
| 2026-04-13 17:46:48 +0000 | <Rembane> | Hi! :D |
| 2026-04-13 17:46:55 +0000 | ChanServ | +o Rembane |
| 2026-04-13 17:46:58 +0000 | <shapr> | hello Rembane! |
| 2026-04-13 17:47:15 +0000 | <shapr> | Rembane: I don't think I have a keyboard powerful enough to run Haskell. |
| 2026-04-13 17:47:28 +0000 | <Rembane> | shapr: Oh no! :( |
| 2026-04-13 17:47:42 +0000 | <shapr> | I don't think I have a keyboard powerful enough to run Rust unless it's no_std rust. |
| 2026-04-13 17:47:53 +0000 | <shapr> | Rembane: do you know of a keyboard powerful enough to run MicroHS? |
| 2026-04-13 17:48:19 +0000 | <janus> | shapr: have you seen Dmitry Grinberg write a MIPS emulator for the Intel 4004 from 1971 |
| 2026-04-13 17:48:30 +0000 | <janus> | after waiting 5 days to boot linux, you can launch microhs |
| 2026-04-13 17:48:36 +0000 | <mauke> | shapr: o/ |
| 2026-04-13 17:48:50 +0000 | <Rembane> | shapr: Hm... no, but it seems like janus does! :D |
| 2026-04-13 17:48:56 +0000 | <janus> | so surely most keyboards can run microhs, since they probably have microcontrollers at least as powerful as the intel 4004 |
| 2026-04-13 17:49:34 +0000 | <EvanR> | I college programming 101, it was stated "the keyboard is a file". If you install haskell on your keyboard, what is it now. A function? |
| 2026-04-13 17:49:49 +0000 | <shapr> | mauke: hello! |
| 2026-04-13 17:50:15 +0000 | <shapr> | I think Haskell on Keyboard is a silly project idea. |
| 2026-04-13 17:50:47 +0000 | <mauke> | why function keys if not functional programming? |
| 2026-04-13 17:50:53 +0000 | <shapr> | oooh |
| 2026-04-13 17:50:54 +0000 | <shapr> | good point! |
| 2026-04-13 17:51:08 +0000 | <shapr> | We put the Funk in Funktionelle |
| 2026-04-13 17:51:27 +0000 | <EvanR> | the keyboard is a function from Time to [Key] |
| 2026-04-13 17:51:45 +0000 | <EvanR> | the well behavedness of this function can be debated |
| 2026-04-13 17:55:21 +0000 | robobub | (uid248673@id-248673.uxbridge.irccloud.com) robobub |
| 2026-04-13 17:57:08 +0000 | dumptruckman | (~dumptruck@45-79-134-140.ip.linodeusercontent.com) (Quit: ZNC - https://znc.in) |
| 2026-04-13 17:57:56 +0000 | arandombit | (~arandombi@2a02:2455:8656:7100:21e4:4567:22be:8bd9) |
| 2026-04-13 17:57:56 +0000 | arandombit | (~arandombi@2a02:2455:8656:7100:21e4:4567:22be:8bd9) (Changing host) |
| 2026-04-13 17:57:56 +0000 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-04-13 17:58:39 +0000 | <gentauro> | do we have multiple enum values in Haskell? F# -> `type [<Flags>] FooBar = Foo = 0 | Bar = 1 | Baz = 2 | Qux = 4`. let barQux = Bar ||| Qux`. Source: https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/enumerations#remarks |
| 2026-04-13 17:59:30 +0000 | <EvanR> | > enumFromTo 0 1 :: [Bool] |
| 2026-04-13 17:59:31 +0000 | <lambdabot> | No instance for ‘Num Bool’ arising from the literal ‘0’ |
| 2026-04-13 17:59:31 +0000 | <lambdabot> | In the first argument of ‘enumFromTo’, namely ‘0’ |
| 2026-04-13 17:59:31 +0000 | <lambdabot> | In the expression: enumFromTo 0 1 :: [Bool] |
| 2026-04-13 17:59:46 +0000 | <EvanR> | > enumFromTo False True :: [Int] |
| 2026-04-13 17:59:47 +0000 | <lambdabot> | Couldn't match expected type ‘Int’ with actual type ‘Bool’ |
| 2026-04-13 17:59:47 +0000 | <lambdabot> | In the second argument of ‘enumFromTo’, namely ‘True’ |
| 2026-04-13 17:59:47 +0000 | <lambdabot> | In the expression: enumFromTo False True :: [Int]Couldn't match expected typ... |
| 2026-04-13 17:59:59 +0000 | <EvanR> | facepalm |
| 2026-04-13 18:00:16 +0000 | <EvanR> | we have multiple enum values |
| 2026-04-13 18:00:22 +0000 | <mauke> | gentauro: no |
| 2026-04-13 18:00:24 +0000 | <gentauro> | EvanR: but that's a range right? |
| 2026-04-13 18:00:35 +0000 | <gentauro> | Flags in F# is like powers of 2 |
| 2026-04-13 18:00:45 +0000 | <EvanR> | oh |
| 2026-04-13 18:00:48 +0000 | <gentauro> | so by using the OR operator, you can store in a single enum field several values |
| 2026-04-13 18:00:58 +0000 | <EvanR> | you can express that in haskell using pattern synonyms for powers of two |
| 2026-04-13 18:01:25 +0000 | <mauke> | you can use an integer type (and bitwise or), or a set of enum values, or a record of bools |
| 2026-04-13 18:01:28 +0000 | gentauro | enums in F# are just sum-types with a numerical value |
| 2026-04-13 18:02:04 +0000 | <EvanR> | .oO( what if you made the Enum instance use powers of two instead of sequential Ints ) |
| 2026-04-13 18:02:09 +0000 | <gentauro> | mauke: yeah, that's what the F# people do with a bit of syntactic sugar |
| 2026-04-13 18:02:23 +0000 | <janus> | but you could do the same in haskell with code generation no? |
| 2026-04-13 18:03:18 +0000 | <gentauro> | I perhaps spend a bit of time on it and make it right. Perhaps it could somehow end in `base`? |
| 2026-04-13 18:03:42 +0000 | <EvanR> | :t (.|.) |
| 2026-04-13 18:03:43 +0000 | <lambdabot> | Bits a => a -> a -> a |
| 2026-04-13 18:03:48 +0000 | <EvanR> | bits class |
| 2026-04-13 18:03:50 +0000 | <gentauro> | it's really useful to use. Ex: `let logger = Info | Debug | Warning` |
| 2026-04-13 18:04:11 +0000 | dumptruckman | (~dumptruck@172-104-5-126.ip.linodeusercontent.com) |
| 2026-04-13 18:04:14 +0000 | <gentauro> | EvanR: got it |
| 2026-04-13 18:04:45 +0000 | Milan_Vanca | (~milan@user/Milan-Vanca:32634) (Quit: WeeChat 4.7.2) |
| 2026-04-13 18:04:51 +0000 | <janus> | i think many see the Enum class as legacy? that might mean that many people refrain from trying to improve it |
| 2026-04-13 18:04:59 +0000 | <mauke> | let logger = defaultLogger{ info = True, debug = True, warning = True } |
| 2026-04-13 18:05:02 +0000 | gentauro | define sum type. Derive `Bounded and Enum` (however Bounded needs to be powers of 2) |
| 2026-04-13 18:05:09 +0000 | <EvanR> | Info .|. Debug .|. Warning, where these are pattern synonyms |
| 2026-04-13 18:05:26 +0000 | <EvanR> | pattern Warning = 0x4 |
| 2026-04-13 18:06:06 +0000 | <mauke> | let info@debug@warning = True; logger = def{..} |
| 2026-04-13 18:06:46 +0000 | r1bilski | (~r1bilski@user/r1bilski) r1bilski |
| 2026-04-13 18:07:10 +0000 | <EvanR> | yeah this is the "configuration monoid" pattern where the monoid op is OR |
| 2026-04-13 18:07:30 +0000 | <EvanR> | and record inspection extracts the bits |
| 2026-04-13 18:10:27 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-04-13 18:11:16 +0000 | <janus> | gentauro: have you seen Data.Bits.Ior? |
| 2026-04-13 18:11:40 +0000 | <janus> | % import Data.Bits |
| 2026-04-13 18:11:40 +0000 | <yahb2> | <no output> |
| 2026-04-13 18:11:50 +0000 | <janus> | % getIor (Ior 0xab <> Ior 0x12) :: Word8 |
| 2026-04-13 18:11:50 +0000 | <yahb2> | <interactive>:13:34: error: [GHC-76037] ; Not in scope: type constructor or class ‘Word8’ ; Suggested fix: Perhaps use ‘Word’ (imported from Prelude) |
| 2026-04-13 18:11:58 +0000 | <janus> | oh well, you get the idea |
| 2026-04-13 18:12:36 +0000 | <mauke> | % getIor (0xab <> 0x12) |
| 2026-04-13 18:12:36 +0000 | <yahb2> | <interactive>:15:1: error: [GHC-39999] ; • No instance for ‘Num (Ior Integer)’ arising from a use of ‘it’ ; • In the first argument of ‘Yahb2Defs.limitedPrint’, namely ‘it’ ; In a stm... |
| 2026-04-13 18:12:41 +0000 | <gentauro> | janus: I think `Word8` now is `Internal` in `base` (as in `ghc-internal` |
| 2026-04-13 18:13:07 +0000 | <janus> | it might be defined in something called Internal, but it then gets re-exported |
| 2026-04-13 18:13:20 +0000 | <janus> | you can use it without issues, it's some secrit type |
| 2026-04-13 18:13:25 +0000 | <janus> | *not some secrit |
| 2026-04-13 18:14:43 +0000 | <janus> | gentauro: do you use JSON? it would be nice to have a mapping that could get emitted to OpenAPI |
| 2026-04-13 18:15:48 +0000 | <gentauro> | % import Data.Word |
| 2026-04-13 18:15:49 +0000 | <yahb2> | <no output> |
| 2026-04-13 18:15:54 +0000 | <gentauro> | :i Word8 |
| 2026-04-13 18:15:58 +0000 | <gentauro> | % :i Word8 |
| 2026-04-13 18:15:58 +0000 | <yahb2> | type Word8 :: * ; data Word8 = GHC.Internal.Word.W8# GHC.Internal.Prim.Word8# ; -- Defined in ‘GHC.Internal.Word’ ; instance NFData Word8 -- Defined in ‘Control.DeepSeq’ ; instance Integral Word... |
| 2026-04-13 18:16:12 +0000 | <gentauro> | oh yeah, it's still accessible |
| 2026-04-13 18:16:47 +0000 | <janus> | yeah it's a great type. people should use sized words more. |
| 2026-04-13 18:17:03 +0000 | <janus> | at my last job, we used Int everywhere because then ' it looked simpler' |
| 2026-04-13 18:17:16 +0000 | <janus> | but the cost is correctness ... |
| 2026-04-13 18:19:25 +0000 | <janus> | % getIor (Ior 0xab <> Ior 0x12) :: Word8 |
| 2026-04-13 18:19:25 +0000 | <yahb2> | 187 |
| 2026-04-13 18:20:18 +0000 | <EvanR> | as usual, Int is great as long as your math stays in the representable range |
| 2026-04-13 18:20:41 +0000 | <EvanR> | which also applies to bitwise |
| 2026-04-13 18:21:15 +0000 | <gentauro> | Int is `singed integer 32` while `Word` is `unsigned integer 32` right? |
| 2026-04-13 18:21:21 +0000 | <EvanR> | not necessarily |
| 2026-04-13 18:21:39 +0000 | <janus> | % maxBound :: Int |
| 2026-04-13 18:21:39 +0000 | <yahb2> | 9223372036854775807 |
| 2026-04-13 18:21:51 +0000 | <janus> | % 0xffffffff |
| 2026-04-13 18:21:51 +0000 | <yahb2> | 4294967295 |
| 2026-04-13 18:22:00 +0000 | <EvanR> | an (old?) spec gaurantees it has at least 29 bits |
| 2026-04-13 18:22:42 +0000 | gentauro | hmmm, INTeresting |
| 2026-04-13 18:22:57 +0000 | <EvanR> | respectable desktop PC operators get 64 bits |
| 2026-04-13 18:23:01 +0000 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 244 seconds) |
| 2026-04-13 18:23:15 +0000 | Googulator26 | (~Googulato@94-21-172-213.pool.digikabel.hu) |
| 2026-04-13 18:23:17 +0000 | <janus> | i think i would respect someone with a 32-bit machine more actually... |
| 2026-04-13 18:23:25 +0000 | <EvanR> | o_O |
| 2026-04-13 18:23:38 +0000 | <janus> | retrocomputing takes dedication |
| 2026-04-13 18:23:50 +0000 | <EvanR> | lol |
| 2026-04-13 18:26:52 +0000 | Googulator | (~Googulato@94-21-172-213.pool.digikabel.hu) (Ping timeout: 245 seconds) |
| 2026-04-13 18:29:07 +0000 | danishman | (~danishman@85.82.118.246) |
| 2026-04-13 18:29:11 +0000 | alter2000 | (~alter2000@user/alter2000) alter2000 |
| 2026-04-13 18:30:03 +0000 | mesaoptimizer | (~user@user/PapuaHardyNet) (Quit: WeeChat 4.7.1) |
| 2026-04-13 18:30:26 +0000 | mesaoptimizer | (~user@user/PapuaHardyNet) PapuaHardyNet |
| 2026-04-13 18:33:55 +0000 | r1bilski | (~r1bilski@user/r1bilski) (Read error: Connection reset by peer) |
| 2026-04-13 18:37:21 +0000 | Ekho | (~Ekho@user/ekho) (Quit: CORE ERROR, SYSTEM HALTED.) |
| 2026-04-13 18:37:32 +0000 | gentauro | hmmm, INTeresting |
| 2026-04-13 18:37:35 +0000 | <gentauro> | ups |
| 2026-04-13 18:38:26 +0000 | Ekho | (~Ekho@user/ekho) Ekho |
| 2026-04-13 18:38:43 +0000 | danishman | (~danishman@85.82.118.246) (Quit: Leaving) |
| 2026-04-13 18:39:12 +0000 | <mauke> | > maxBound :: Word |
| 2026-04-13 18:39:13 +0000 | <lambdabot> | 18446744073709551615 |
| 2026-04-13 18:42:13 +0000 | polykernel_ | (~polykerne@user/polykernel) polykernel |
| 2026-04-13 18:44:37 +0000 | polykernel | (~polykerne@user/polykernel) (Ping timeout: 244 seconds) |
| 2026-04-13 18:44:37 +0000 | polykernel_ | polykernel |
| 2026-04-13 18:46:16 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 18:49:57 +0000 | potatomuncher|2 | (~kvirc@user/potatomuncher) (Ping timeout: 255 seconds) |
| 2026-04-13 18:50:55 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-04-13 18:51:24 +0000 | srazkvt | (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
| 2026-04-13 19:01:39 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 19:03:19 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 244 seconds) |
| 2026-04-13 19:08:29 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-04-13 19:08:32 +0000 | puke | (~puke@user/puke) puke |
| 2026-04-13 19:10:37 +0000 | machinedgod | (~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 276 seconds) |
| 2026-04-13 19:15:25 +0000 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-04-13 19:16:06 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-13 19:20:43 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |