| 2025-04-11 00:00:34 +0000 | <EvanR> | that's addCont |
| 2025-04-11 00:01:05 +0000 | <EvanR> | but if you went the route of an interpreter for a free monad, you would "catch" there |
| 2025-04-11 00:01:35 +0000 | <EvanR> | and >>= would still add another post processing step in that case as well |
| 2025-04-11 00:02:51 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 00:04:33 +0000 | jespada | (~jespada@r179-25-43-11.dialup.adsl.anteldata.net.uy) (Ping timeout: 248 seconds) |
| 2025-04-11 00:08:04 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 00:10:12 +0000 | <Guest87> | Hmmm this is very cool |
| 2025-04-11 00:10:33 +0000 | <Guest87> | EvanR, thank you so much for patiently letting me fix issues in my program and then talking through it |
| 2025-04-11 00:10:59 +0000 | <Guest87> | I have ran into "Free Monads" before but this is the first time I see a use case, so I will just go and read about it |
| 2025-04-11 00:18:35 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 00:23:18 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2025-04-11 00:25:52 +0000 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 2025-04-11 00:30:12 +0000 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds) |
| 2025-04-11 00:30:46 +0000 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2025-04-11 00:33:59 +0000 | potatoespotatoes | (~quassel@user/potatoespotatoes) () |
| 2025-04-11 00:34:22 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 00:35:42 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) ezzieyguywuf |
| 2025-04-11 00:36:40 +0000 | potatoespotatoes | (~quassel@130.44.147.204) |
| 2025-04-11 00:36:40 +0000 | potatoespotatoes | (~quassel@130.44.147.204) (Changing host) |
| 2025-04-11 00:36:40 +0000 | potatoespotatoes | (~quassel@user/potatoespotatoes) potatoespotatoes |
| 2025-04-11 00:39:06 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 00:39:15 +0000 | potatoespotatoes | (~quassel@user/potatoespotatoes) (Client Quit) |
| 2025-04-11 00:39:17 +0000 | sabathan2 | (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Ping timeout: 248 seconds) |
| 2025-04-11 00:39:45 +0000 | potatoespotatoes | (~quassel@130.44.147.204) potatoespotatoes |
| 2025-04-11 00:39:45 +0000 | potatoespotatoes | (~quassel@130.44.147.204) (Changing host) |
| 2025-04-11 00:39:45 +0000 | potatoespotatoes | (~quassel@user/potatoespotatoes) potatoespotatoes |
| 2025-04-11 00:42:57 +0000 | sabathan2 | (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) |
| 2025-04-11 00:50:21 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 00:57:20 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 00:57:21 +0000 | <haskellbridge> | <Bowuigi> lens-regex-pcre introduces a clever approach to implementing and extending structural regular expressions. Are there generalizations of this? Such that you can query parts of a structure and modify them based on that |
| 2025-04-11 00:57:49 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 00:58:16 +0000 | otto_s | (~user@p4ff278a2.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 2025-04-11 00:58:54 +0000 | <geekosaur> | isn't that … lens? |
| 2025-04-11 00:59:13 +0000 | <haskellbridge> | <Bowuigi> No no I mean, optics that check if there's a certain node inside a tree and allow you to modify the place where the query is ran rather than the node |
| 2025-04-11 00:59:45 +0000 | otto_s | (~user@p5de2fd33.dip0.t-ipconnect.de) |
| 2025-04-11 01:01:53 +0000 | <haskellbridge> | <Bowuigi> "branch . without leaf" matching branches that do not have leaves as their inmediate substructures, for example |
| 2025-04-11 01:02:26 +0000 | <glguy> | You can write that in regular lens |
| 2025-04-11 01:02:29 +0000 | <geekosaur> | I think there are optics for that? |
| 2025-04-11 01:03:03 +0000 | <haskellbridge> | <Bowuigi> I'd assume so yeah |
| 2025-04-11 01:03:22 +0000 | <glguy> | you need to be careful about going and adding a leaf in that case where there wasn't one there before it you want to be able to use lens law reasoning |
| 2025-04-11 01:08:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 01:08:17 +0000 | <haskellbridge> | <Bowuigi> Based on that warning I think that filtered is what I'm looking for |
| 2025-04-11 01:09:17 +0000 | <haskellbridge> | <Bowuigi> Actually no, it's rewriteOf |
| 2025-04-11 01:09:54 +0000 | xff0x | (~xff0x@2405:6580:b080:900:1c0d:6c97:349e:6228) (Ping timeout: 252 seconds) |
| 2025-04-11 01:10:02 +0000 | <haskellbridge> | <Bowuigi> Based on this example https://github.com/stevenfontanella/microlens/pull/119#issuecomment-496004851 |
| 2025-04-11 01:13:43 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 01:17:22 +0000 | acidjnk | (~acidjnk@p200300d6e71c4f7444aa95b6f7c7abd1.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 2025-04-11 01:24:00 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 01:26:35 +0000 | __jmcantrell__ | (~weechat@user/jmcantrell) jmcantrell |
| 2025-04-11 01:26:35 +0000 | jmcantrell | Guest8811 |
| 2025-04-11 01:26:35 +0000 | Guest8811 | (644f1bed9a@user/jmcantrell) (Killed (copper.libera.chat (Nickname regained by services))) |
| 2025-04-11 01:26:35 +0000 | __jmcantrell__ | jmcantrell |
| 2025-04-11 01:26:44 +0000 | jmcantrell_ | (644f1bed9a@user/jmcantrell) jmcantrell |
| 2025-04-11 01:29:19 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 01:31:42 +0000 | Guest87 | (~Guest87@2620:72:0:1f18:7d2a:62e7:7a20:d79f) (Quit: Client closed) |
| 2025-04-11 01:32:41 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Quit: Lost terminal) |
| 2025-04-11 01:34:32 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) ezzieyguywuf |
| 2025-04-11 01:39:48 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 01:43:03 +0000 | OftenFaded | (~OftenFade@user/tisktisk) OftenFaded |
| 2025-04-11 01:44:55 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 01:55:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 02:00:30 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 02:05:35 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2025-04-11 02:11:21 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 02:16:19 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 02:20:04 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
| 2025-04-11 02:21:58 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 2025-04-11 02:22:26 +0000 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection) |
| 2025-04-11 02:23:00 +0000 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) hackager |
| 2025-04-11 02:23:00 +0000 | ChanServ | +v haskellbridge |
| 2025-04-11 02:26:58 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 02:30:15 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 2025-04-11 02:30:52 +0000 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Quit: Ping timeout (120 seconds)) |
| 2025-04-11 02:31:13 +0000 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) sciencentistguy |
| 2025-04-11 02:32:43 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) ezzieyguywuf |
| 2025-04-11 02:33:57 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2025-04-11 02:34:08 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Client Quit) |
| 2025-04-11 02:35:48 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) ezzieyguywuf |
| 2025-04-11 02:42:15 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 02:45:02 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 02:48:24 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
| 2025-04-11 02:49:16 +0000 | roconnor | (~quassel@rocq/roconnor) (Ping timeout: 276 seconds) |
| 2025-04-11 02:49:19 +0000 | roconnor_ | (~quassel@rocq/roconnor) roconnor |
| 2025-04-11 02:49:54 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 03:00:49 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 03:02:13 +0000 | Ranhir | (~Ranhir@157.97.53.139) (Remote host closed the connection) |
| 2025-04-11 03:04:24 +0000 | Ranhir | (~Ranhir@157.97.53.139) Ranhir |
| 2025-04-11 03:05:38 +0000 | j1n37 | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 2025-04-11 03:05:40 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 03:11:39 +0000 | j1n37 | (~j1n37@user/j1n37) j1n37 |
| 2025-04-11 03:16:36 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 03:21:21 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 03:22:21 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 03:32:24 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 03:32:48 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Quit: Lost terminal) |
| 2025-04-11 03:34:36 +0000 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) ezzieyguywuf |
| 2025-04-11 03:37:58 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2025-04-11 03:43:13 +0000 | michalz | (~michalz@185.246.207.205) |
| 2025-04-11 03:47:51 +0000 | aforemny | (~aforemny@2001:9e8:6cf4:300:5306:52f:8502:4ee0) aforemny |
| 2025-04-11 03:48:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 03:49:48 +0000 | aforemny_ | (~aforemny@2001:9e8:6cd3:ed00:7f35:da5a:93ab:c3e3) (Ping timeout: 276 seconds) |
| 2025-04-11 03:53:37 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 04:00:46 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds) |
| 2025-04-11 04:01:05 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2025-04-11 04:03:58 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 04:10:46 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-04-11 04:20:55 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds) |
| 2025-04-11 04:21:32 +0000 | tabaqui | (~tabaqui@167.71.80.236) tabaqui |
| 2025-04-11 04:22:00 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 04:27:25 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 04:37:46 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 04:42:44 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 04:44:58 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 04:50:10 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 04:52:04 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
| 2025-04-11 04:57:52 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 05:00:44 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 05:04:23 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 05:05:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 05:09:20 +0000 | qeef | (~qeef@138-169-143-94.cust.centrio.cz) qeef |
| 2025-04-11 05:16:32 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 05:22:01 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 05:28:17 +0000 | forell | (~forell@user/forell) (Ping timeout: 248 seconds) |
| 2025-04-11 05:32:19 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 05:34:22 +0000 | qeef | (~qeef@138-169-143-94.cust.centrio.cz) (Ping timeout: 276 seconds) |
| 2025-04-11 05:35:38 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 2025-04-11 05:37:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 05:40:03 +0000 | XZDX | (~xzdx@user/XZDX) (Remote host closed the connection) |
| 2025-04-11 05:41:05 +0000 | Garbanzo | (~Garbanzo@2602:304:6eac:dc10::2e) |
| 2025-04-11 05:41:34 +0000 | remexre_ | (~remexre@user/remexre) remexre |
| 2025-04-11 05:41:41 +0000 | remexre | (~remexre@user/remexre) (Ping timeout: 268 seconds) |
| 2025-04-11 05:43:26 +0000 | Eoco | (~ian@128.101.131.218) (Ping timeout: 265 seconds) |
| 2025-04-11 05:45:13 +0000 | Eoco | (~ian@128.101.131.218) Eoco |
| 2025-04-11 05:46:43 +0000 | remexre_ | (~remexre@user/remexre) (Ping timeout: 276 seconds) |
| 2025-04-11 05:47:47 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
| 2025-04-11 05:48:07 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 05:50:12 +0000 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
| 2025-04-11 05:55:49 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 05:58:25 +0000 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:6582:5675:67d:4956) (Ping timeout: 276 seconds) |
| 2025-04-11 05:59:38 +0000 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2025-04-11 05:59:59 +0000 | polyphem | (~rod@pd9fbfc2f.dip0.t-ipconnect.de) polyphem |
| 2025-04-11 06:03:41 +0000 | amadaluzia | (~amadaluzi@user/amadaluzia) amadaluzia |
| 2025-04-11 06:04:17 +0000 | amadaluzia | (~amadaluzi@user/amadaluzia) (Remote host closed the connection) |
| 2025-04-11 06:05:27 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
| 2025-04-11 06:06:08 +0000 | remexre | (~remexre@user/remexre) remexre |
| 2025-04-11 06:06:10 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 06:06:57 +0000 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen |
| 2025-04-11 06:07:00 +0000 | JuanDaugherty | ColinRobinson |
| 2025-04-11 06:10:48 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2025-04-11 06:11:14 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
| 2025-04-11 06:20:55 +0000 | ft | (~ft@p508db594.dip0.t-ipconnect.de) (Quit: leaving) |
| 2025-04-11 06:21:56 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 06:22:20 +0000 | jmcantrell | (~weechat@user/jmcantrell) (Quit: WeeChat 4.6.1) |
| 2025-04-11 06:22:20 +0000 | jmcantrell_ | jmcantrell |
| 2025-04-11 06:22:54 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 06:27:40 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 06:27:57 +0000 | pikajude | (~jude@2001:19f0:ac01:373:5400:2ff:fe86:3274) (Quit: ZNC 1.8.2 - https://znc.in) |
| 2025-04-11 06:28:17 +0000 | pikajude | (~jude@2001:19f0:ac01:373:5400:2ff:fe86:3274) pikajude |
| 2025-04-11 06:28:19 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 2025-04-11 06:33:12 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 264 seconds) |
| 2025-04-11 06:33:39 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) chexum |
| 2025-04-11 06:37:44 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 06:37:48 +0000 | Garbanzo | (~Garbanzo@2602:304:6eac:dc10::2e) (Remote host closed the connection) |
| 2025-04-11 06:40:10 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 06:41:58 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds) |
| 2025-04-11 06:42:44 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2025-04-11 06:43:56 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2025-04-11 06:45:49 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
| 2025-04-11 06:49:46 +0000 | Square | (~Square4@user/square) (Ping timeout: 276 seconds) |
| 2025-04-11 06:53:22 +0000 | tomboy64 | (~tomboy64@user/tomboy64) (Ping timeout: 252 seconds) |
| 2025-04-11 06:53:31 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 06:54:08 +0000 | acidjnk | (~acidjnk@p200300d6e71c4f7444aa95b6f7c7abd1.dip0.t-ipconnect.de) acidjnk |
| 2025-04-11 06:54:09 +0000 | tomboy64 | (~tomboy64@user/tomboy64) tomboy64 |
| 2025-04-11 06:57:53 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 06:58:14 +0000 | j1n37- | (~j1n37@user/j1n37) j1n37 |
| 2025-04-11 06:58:30 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 06:59:31 +0000 | j1n37 | (~j1n37@user/j1n37) (Ping timeout: 276 seconds) |
| 2025-04-11 07:00:02 +0000 | caconym | (~caconym@user/caconym) (Quit: bye) |
| 2025-04-11 07:01:01 +0000 | caconym | (~caconym@user/caconym) caconym |
| 2025-04-11 07:02:32 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 2025-04-11 07:02:50 +0000 | Feuermagier | (~Feuermagi@user/feuermagier) (Quit: Leaving) |
| 2025-04-11 07:07:48 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 2025-04-11 07:08:54 +0000 | Googulator | (~Googulato@2a01-036d-0106-211a-98f9-54d1-cd01-d0d3.pool6.digikabel.hu) (Ping timeout: 240 seconds) |
| 2025-04-11 07:15:28 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 07:16:29 +0000 | vpan | (~vpan@212.117.1.172) |
| 2025-04-11 07:18:57 +0000 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 2025-04-11 07:19:21 +0000 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
| 2025-04-11 07:20:54 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 244 seconds) |
| 2025-04-11 07:22:06 +0000 | <jackdk> | Bowuigi I think you don't even have to write `subExprs` by hand - you could stock-derive `Data` and use `uniplate` or anyclass-derive `Plated` and use `plated`, or derive Generic and use `gplate` |
| 2025-04-11 07:23:26 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 07:23:32 +0000 | __monty__ | (~toonn@user/toonn) toonn |
| 2025-04-11 07:23:58 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 07:27:19 +0000 | j1n37 | (~j1n37@user/j1n37) j1n37 |
| 2025-04-11 07:27:52 +0000 | j1n37- | (~j1n37@user/j1n37) (Ping timeout: 272 seconds) |
| 2025-04-11 07:28:51 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 2025-04-11 07:30:44 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2025-04-11 07:31:27 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) acidjnk |
| 2025-04-11 07:31:47 +0000 | rvalue | (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 2025-04-11 07:32:20 +0000 | rvalue | (~rvalue@user/rvalue) rvalue |
| 2025-04-11 07:32:40 +0000 | acidjnk | (~acidjnk@p200300d6e71c4f7444aa95b6f7c7abd1.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 2025-04-11 07:35:03 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 07:39:33 +0000 | <hellwolf> | Short notice: Who wants to join a zoom call that discuss lineartypes at 2PM UTC today? |
| 2025-04-11 07:40:38 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 07:41:29 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 07:42:10 +0000 | sayurc_ | (~sayurc@169.150.203.34) (Quit: Konversation terminated!) |
| 2025-04-11 07:45:25 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 248 seconds) |
| 2025-04-11 07:46:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2025-04-11 07:52:44 +0000 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
| 2025-04-11 07:53:27 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds) |
| 2025-04-11 07:57:15 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 07:57:57 +0000 | mima_ | mima |
| 2025-04-11 07:58:36 +0000 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli) |
| 2025-04-11 08:02:14 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 08:08:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 08:08:54 +0000 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 2025-04-11 08:09:24 +0000 | ColinRobinson | (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
| 2025-04-11 08:14:16 +0000 | forell | (~forell@user/forell) forell |
| 2025-04-11 08:14:21 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 08:15:23 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 08:17:02 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 08:17:19 +0000 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
| 2025-04-11 08:20:16 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 08:22:43 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 2025-04-11 08:26:02 +0000 | j1n37- | (~j1n37@user/j1n37) j1n37 |
| 2025-04-11 08:26:03 +0000 | j1n37 | (~j1n37@user/j1n37) (Ping timeout: 252 seconds) |
| 2025-04-11 08:31:03 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 08:32:03 +0000 | turlando | (~turlando@user/turlando) () |
| 2025-04-11 08:32:51 +0000 | chele | (~chele@user/chele) chele |
| 2025-04-11 08:33:18 +0000 | califax | (~califax@user/califx) (Read error: Connection reset by peer) |
| 2025-04-11 08:33:18 +0000 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Read error: Connection reset by peer) |
| 2025-04-11 08:33:18 +0000 | gmg | (~user@user/gehmehgeh) (Read error: Connection reset by peer) |
| 2025-04-11 08:33:18 +0000 | chiselfuse | (~chiselfus@user/chiselfuse) (Read error: Connection reset by peer) |
| 2025-04-11 08:33:18 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 2025-04-11 08:33:30 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) chexum |
| 2025-04-11 08:33:37 +0000 | califax | (~califax@user/califx) califx |
| 2025-04-11 08:33:41 +0000 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2025-04-11 08:33:56 +0000 | chiselfuse | (~chiselfus@user/chiselfuse) chiselfuse |
| 2025-04-11 08:33:59 +0000 | gmg | (~user@user/gehmehgeh) gehmehgeh |
| 2025-04-11 08:34:00 +0000 | turlando | (~turlando@user/turlando) turlando |
| 2025-04-11 08:35:35 +0000 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
| 2025-04-11 08:36:03 +0000 | Googulator | (~Googulato@81.183.235.203) |
| 2025-04-11 08:36:16 +0000 | Igloo | (~ian@2001:8b0:645c::210) (Ping timeout: 272 seconds) |
| 2025-04-11 08:36:22 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 08:40:44 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 08:42:23 +0000 | turlando | (~turlando@user/turlando) () |
| 2025-04-11 08:45:23 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
| 2025-04-11 08:46:40 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 08:47:59 +0000 | Igloo | (~ian@81.2.99.210) Igfoo |
| 2025-04-11 08:52:06 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2025-04-11 08:55:52 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 2025-04-11 09:02:26 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 09:07:38 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) lisbeths |
| 2025-04-11 09:13:37 +0000 | sprotte24 | (~sprotte24@p200300d16f1c5b0064420e97db58ee64.dip0.t-ipconnect.de) |
| 2025-04-11 09:13:54 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 09:14:24 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 09:19:55 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 2025-04-11 09:20:59 +0000 | lyxia | (~lyxia@poisson.chat) (Quit: WeeChat 4.5.1) |
| 2025-04-11 09:25:33 +0000 | merijn | (~merijn@62.45.137.128) merijn |
| 2025-04-11 09:26:05 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 09:30:28 +0000 | merijn | (~merijn@62.45.137.128) (Ping timeout: 268 seconds) |
| 2025-04-11 09:30:58 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 2025-04-11 09:31:03 +0000 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
| 2025-04-11 09:35:53 +0000 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 2025-04-11 09:40:43 +0000 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds) |
| 2025-04-11 09:41:15 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 09:41:57 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds) |
| 2025-04-11 09:42:02 +0000 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) tcard |
| 2025-04-11 09:43:02 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 09:44:39 +0000 | Guest84 | (~Guest99@194.89.25.85) |
| 2025-04-11 09:44:43 +0000 | lyxia | (~lyxia@poisson.chat) |
| 2025-04-11 09:46:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 09:51:52 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
| 2025-04-11 09:57:03 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 10:00:09 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 2025-04-11 10:01:31 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds) |
| 2025-04-11 10:02:15 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 10:04:15 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 10:05:40 +0000 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
| 2025-04-11 10:10:38 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 10:11:38 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
| 2025-04-11 10:15:49 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 10:24:51 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 10:26:27 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 10:31:15 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-04-11 10:31:18 +0000 | Googulator | (~Googulato@81.183.235.203) (Ping timeout: 240 seconds) |
| 2025-04-11 10:36:49 +0000 | roconnor_ | roconnor |
| 2025-04-11 10:37:18 +0000 | Guest84 | (~Guest99@194.89.25.85) (Ping timeout: 240 seconds) |
| 2025-04-11 10:39:00 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 244 seconds) |
| 2025-04-11 10:40:36 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 10:42:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 10:46:22 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 2025-04-11 10:49:14 +0000 | sprotte24 | (~sprotte24@p200300d16f1c5b0064420e97db58ee64.dip0.t-ipconnect.de) (Quit: Leaving) |
| 2025-04-11 10:49:37 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 10:51:00 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 276 seconds) |
| 2025-04-11 10:51:05 +0000 | comonad | (~comonad@p200300d0274ac2004a3b1ffc163e1801.dip0.t-ipconnect.de) (Quit: WeeChat 4.6.0-dev) |
| 2025-04-11 10:56:42 +0000 | Googulator | (~Googulato@81.183.235.203) |
| 2025-04-11 10:57:12 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac |
| 2025-04-11 10:58:21 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 11:00:17 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 11:02:19 +0000 | jespada | (~jespada@r167-61-120-190.dialup.adsl.anteldata.net.uy) jespada |
| 2025-04-11 11:05:44 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2025-04-11 11:11:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 11:16:56 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2025-04-11 11:27:26 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 11:34:08 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2025-04-11 11:37:31 +0000 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
| 2025-04-11 11:41:43 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
| 2025-04-11 11:45:28 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 11:45:36 +0000 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 276 seconds) |
| 2025-04-11 11:46:32 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 2025-04-11 11:50:22 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 12:01:14 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 12:06:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 12:12:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 12:13:54 +0000 | JuanDaugherty | ColinRobinson |
| 2025-04-11 12:17:30 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 12:17:52 +0000 | forell | (~forell@user/forell) (Ping timeout: 252 seconds) |
| 2025-04-11 12:18:33 +0000 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
| 2025-04-11 12:22:10 +0000 | <haskellbridge> | <thirdofmay18081814goya> data Pred a where |
| 2025-04-11 12:22:10 +0000 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/IsqfhephrLUQZbBWOtaJJgoT/AzLVmVwqQEE (13 lines) |
| 2025-04-11 12:22:26 +0000 | <haskellbridge> | <thirdofmay18081814goya> anyone have an idea what's the proper way to implement a class like this? |
| 2025-04-11 12:24:30 +0000 | <haskellbridge> | <thirdofmay18081814goya> the idea is that we declare at the typelevel that a particular constant should be available ("predfuncs") in scope |
| 2025-04-11 12:25:04 +0000 | xff0x | (~xff0x@2405:6580:b080:900:46de:d563:2315:dd7b) |
| 2025-04-11 12:28:27 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 12:32:09 +0000 | jespada | (~jespada@r167-61-120-190.dialup.adsl.anteldata.net.uy) (Ping timeout: 260 seconds) |
| 2025-04-11 12:33:37 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2025-04-11 12:35:43 +0000 | jespada | (~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) jespada |
| 2025-04-11 12:36:19 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2025-04-11 12:38:31 +0000 | <haskellbridge> | <thirdofmay18081814goya> "instance WithPreds [a] (Nonempty :' []) where predfuncs = [assoc Nonempty]" worked |
| 2025-04-11 12:41:56 +0000 | <haskellbridge> | <thirdofmay18081814goya> hm, ideally I'd want an instance "instance WithPreds [a] preds where predfuncs = map assoc preds" |
| 2025-04-11 12:42:23 +0000 | <haskellbridge> | <thirdofmay18081814goya> using "preds" here makes ghc report that it's an illegal term-level use of type variable "preds" |
| 2025-04-11 12:44:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 12:49:52 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 12:51:10 +0000 | weary-traveler | (~user@user/user363627) user363627 |
| 2025-04-11 12:57:56 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 13:02:53 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2025-04-11 13:13:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 13:20:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 13:23:41 +0000 | amadaluzia | (~amadaluzi@user/amadaluzia) amadaluzia |
| 2025-04-11 13:23:43 +0000 | ft | (~ft@p508db594.dip0.t-ipconnect.de) ft |
| 2025-04-11 13:23:59 +0000 | ColinRobinson | JuanDaugherty |
| 2025-04-11 13:31:42 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 13:32:51 +0000 | jespada | (~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) (Ping timeout: 276 seconds) |
| 2025-04-11 13:35:16 +0000 | jespada | (~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) jespada |
| 2025-04-11 13:35:23 +0000 | vpan | (~vpan@212.117.1.172) (Quit: Leaving.) |
| 2025-04-11 13:37:19 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 13:42:31 +0000 | JuanDaugherty | ColinRobinson |
| 2025-04-11 13:45:23 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
| 2025-04-11 13:46:10 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
| 2025-04-11 13:47:30 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 13:51:24 +0000 | ColinRobinson | (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
| 2025-04-11 13:52:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2025-04-11 14:00:57 +0000 | infinity0 | (~infinity0@pwned.gg) (Remote host closed the connection) |
| 2025-04-11 14:01:06 +0000 | hiecaq | (~hiecaq@user/hiecaq) hiecaq |
| 2025-04-11 14:02:14 +0000 | infinity0 | (~infinity0@pwned.gg) infinity0 |
| 2025-04-11 14:03:16 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 14:05:17 +0000 | rbdr | (~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) rbdr |
| 2025-04-11 14:06:41 +0000 | rbdr | (~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) (Client Quit) |
| 2025-04-11 14:08:23 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) acidjnk |
| 2025-04-11 14:08:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 14:10:58 +0000 | hiecaq | (~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92)) |
| 2025-04-11 14:12:06 +0000 | hiecaq | (~hiecaq@user/hiecaq) hiecaq |
| 2025-04-11 14:14:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 14:20:04 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 14:26:08 +0000 | euleritian | (~euleritia@dynamic-176-006-143-216.176.6.pool.telefonica.de) |
| 2025-04-11 14:27:38 +0000 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2025-04-11 14:37:35 +0000 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
| 2025-04-11 14:37:36 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2) |
| 2025-04-11 14:44:41 +0000 | lambdabot | (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection) |
| 2025-04-11 14:46:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 14:54:01 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 14:57:57 +0000 | euleritian | (~euleritia@dynamic-176-006-143-216.176.6.pool.telefonica.de) (Ping timeout: 248 seconds) |
| 2025-04-11 14:58:00 +0000 | chele | (~chele@user/chele) (Remote host closed the connection) |
| 2025-04-11 14:58:29 +0000 | euleritian | (~euleritia@95.90.214.149) |
| 2025-04-11 15:00:07 +0000 | <EvanR> | instance WithPreds [a] preds where predfuncs = map assoc preds indeed looks like you tried to use a type variable from the instance head (another universe) at the value level |
| 2025-04-11 15:00:13 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) lisbeths |
| 2025-04-11 15:00:31 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 2025-04-11 15:01:02 +0000 | rbdr | (~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) rbdr |
| 2025-04-11 15:04:17 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 15:05:19 +0000 | <EvanR> | I guess you want to find a way to reflect the type level list of things to the value level |
| 2025-04-11 15:05:57 +0000 | <EvanR> | usually there's a class for that, or you make one |
| 2025-04-11 15:09:00 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-04-11 15:15:38 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 15:16:38 +0000 | <haskellbridge> | <thirdofmay18081814goya> makes sense, ty! |
| 2025-04-11 15:20:54 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 15:20:56 +0000 | Square2 | (~Square@user/square) Square |
| 2025-04-11 15:21:07 +0000 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
| 2025-04-11 15:24:03 +0000 | Square | (~Square4@user/square) Square |
| 2025-04-11 15:26:43 +0000 | sprotte24 | (~sprotte24@p200300d16f1c5b003c76b51cf90902ef.dip0.t-ipconnect.de) |
| 2025-04-11 15:31:27 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 15:36:27 +0000 | notdabs | (~Owner@2600:1700:69cf:9000:5926:6835:ef1d:9af3) |
| 2025-04-11 15:36:29 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 15:38:34 +0000 | wbrawner | (~wbrawner@129.146.103.146) wbrawner |
| 2025-04-11 15:39:18 +0000 | Googulator | (~Googulato@81.183.235.203) (Ping timeout: 240 seconds) |
| 2025-04-11 15:47:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 15:52:31 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 15:54:43 +0000 | sayurc | (~sayurc@169.150.203.34) sayurc |
| 2025-04-11 15:56:25 +0000 | lambdabot | (~lambdabot@silicon.int-e.eu) |
| 2025-04-11 15:56:25 +0000 | lambdabot | (~lambdabot@silicon.int-e.eu) (Changing host) |
| 2025-04-11 15:56:25 +0000 | lambdabot | (~lambdabot@haskell/bot/lambdabot) lambdabot |
| 2025-04-11 15:56:25 +0000 | ChanServ | +v lambdabot |
| 2025-04-11 16:00:15 +0000 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 2025-04-11 16:03:03 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 16:07:46 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 16:07:46 +0000 | sprotte24 | (~sprotte24@p200300d16f1c5b003c76b51cf90902ef.dip0.t-ipconnect.de) (Quit: Leaving) |
| 2025-04-11 16:08:18 +0000 | forell | (~forell@user/forell) forell |
| 2025-04-11 16:09:19 +0000 | poxel | (~poxel@user/poxel) (Quit: WeeChat 4.6.0) |
| 2025-04-11 16:11:44 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) |
| 2025-04-11 16:16:38 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 16:21:46 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 16:26:45 +0000 | euleritian | (~euleritia@95.90.214.149) (Ping timeout: 252 seconds) |
| 2025-04-11 16:29:40 +0000 | euleritian | (~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de) |
| 2025-04-11 16:32:01 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 16:34:22 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 2025-04-11 16:37:22 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 16:41:36 +0000 | j1n37 | (~j1n37@user/j1n37) j1n37 |
| 2025-04-11 16:43:13 +0000 | j1n37- | (~j1n37@user/j1n37) (Ping timeout: 276 seconds) |
| 2025-04-11 16:47:48 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 16:49:18 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2025-04-11 16:50:27 +0000 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds) |
| 2025-04-11 16:51:22 +0000 | Googulator | (~Googulato@2a01-036d-0106-211a-315b-d519-517f-afe7.pool6.digikabel.hu) |
| 2025-04-11 16:52:20 +0000 | euphores | (~SASL_euph@user/euphores) euphores |
| 2025-04-11 16:52:51 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2025-04-11 16:53:42 +0000 | lxsameer | (~lxsameer@Serene/lxsameer) (Ping timeout: 276 seconds) |
| 2025-04-11 16:54:01 +0000 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2025-04-11 16:57:48 +0000 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
| 2025-04-11 17:00:57 +0000 | target_i | (~target_i@user/target-i/x-6023099) target_i |
| 2025-04-11 17:02:09 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37fdfe54bbfe31434c.dip0.t-ipconnect.de) acidjnk |
| 2025-04-11 17:03:35 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 17:04:46 +0000 | hiecaq | (~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92)) |
| 2025-04-11 17:06:06 +0000 | <bwe> | How can I let the functions a variant of `TheseWriter` depending on which error has been collected on the way? https://paste.tomsmeding.com/tfhujvff |
| 2025-04-11 17:06:51 +0000 | sprotte24 | (~sprotte24@p200300d16f1c5b003c76b51cf90902ef.dip0.t-ipconnect.de) |
| 2025-04-11 17:07:25 +0000 | <EvanR> | Writer can't inspect what was written already |
| 2025-04-11 17:07:36 +0000 | <EvanR> | but State can |
| 2025-04-11 17:08:38 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2025-04-11 17:09:02 +0000 | <bwe> | …it appears to be as simple as going over the collected list to decide which `TheseWriter` variant should be returned. However, I am stuck at `calc3` because there no return value `Int` can be constructed. |
| 2025-04-11 17:09:19 +0000 | <bwe> | EvanR: uuh, that sounds like this might be my initiation ritual to State. |
| 2025-04-11 17:12:57 +0000 | <EvanR> | Writer is "write only" |
| 2025-04-11 17:15:09 +0000 | <tomsmeding> | (that's why it's called "Writer") |
| 2025-04-11 17:15:56 +0000 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen |
| 2025-04-11 17:16:16 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 17:17:18 +0000 | <EvanR> | smh "meaningful names" again |
| 2025-04-11 17:17:36 +0000 | <EvanR> | shoulda just called it the Analysis monad |
| 2025-04-11 17:20:55 +0000 | <ski> | an object in the category of commutative groups is always commutative. an object in the category of groups might or might not be commutative. working only with the abstract interface of "group", you cannot assume commutativity (and also cannot assume there's an example of non-commutativity) |
| 2025-04-11 17:20:55 +0000 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 276 seconds) |
| 2025-04-11 17:21:10 +0000 | <ski> | ditto, for instances of `MonadWriter' (barring knowing anything more about the instance, so that you're "abstract"), you can only assume the operations in the interface. so, can assume writing, cannot assume reading what's been written earlier |
| 2025-04-11 17:21:24 +0000 | <ski> | @type censor |
| 2025-04-11 17:21:25 +0000 | <lambdabot> | MonadWriter w m => (w -> w) -> m a -> m a |
| 2025-04-11 17:21:27 +0000 | <ski> | @type pass |
| 2025-04-11 17:21:28 +0000 | <lambdabot> | MonadWriter w m => m (a, w -> w) -> m a |
| 2025-04-11 17:21:34 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 17:24:05 +0000 | <ski> | (and then `Writer w' is basically the simplest possible (generic, in `w') instance of `MonadWriter') |
| 2025-04-11 17:26:53 +0000 | euleritian | (~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 2025-04-11 17:27:10 +0000 | prasad | (~Thunderbi@c-73-246-138-70.hsd1.in.comcast.net) |
| 2025-04-11 17:27:12 +0000 | euleritian | (~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) |
| 2025-04-11 17:28:13 +0000 | <bwe> | EvanR: WriteButNotRead would be more explicit for the uninitiated:) |
| 2025-04-11 17:28:35 +0000 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
| 2025-04-11 17:29:12 +0000 | <EvanR> | it's true, PHP has this weird ability to inspect anything that it's outputting to the output stream |
| 2025-04-11 17:29:30 +0000 | <EvanR> | which has been abused for some seriously silly things |
| 2025-04-11 17:29:39 +0000 | <ski> | why not `WriteButNotReadAndNotJumpEitherNorAbort' ? |
| 2025-04-11 17:30:29 +0000 | <EvanR> | there's also the Reader which you usually run into before / at the same time as Writer |
| 2025-04-11 17:30:31 +0000 | <ski> | there's a lot of stuff that `Writer' doesn't do |
| 2025-04-11 17:30:48 +0000 | <EvanR> | you wouldn't expect Reader to be able to write |
| 2025-04-11 17:31:49 +0000 | ski | prefers the names "input"/"environment"/"context"/"distribution" and "output"/"logging"/"summarizing" over "reader" and "writer", anyway .. |
| 2025-04-11 17:32:03 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 17:32:37 +0000 | <ski> | mm. Unix allows write-only files, i suppose |
| 2025-04-11 17:33:15 +0000 | <EvanR> | "dependency injection" |
| 2025-04-11 17:33:33 +0000 | <EvanR> | call it that and haskell will hit the big time |
| 2025-04-11 17:33:39 +0000 | <ski> | how does it inspect it, btw ? |
| 2025-04-11 17:34:41 +0000 | ski | . o O ( "Avoid success at all costs." -- Haskell motto ) |
| 2025-04-11 17:35:09 +0000 | <ski> | (was it Peyton Jones ? Marlow ?) |
| 2025-04-11 17:35:17 +0000 | <EvanR> | PHP? you can read the output stream and alter it before it's "really" output from anyplace in the code |
| 2025-04-11 17:35:39 +0000 | <ski> | as in read a buffer ? |
| 2025-04-11 17:36:02 +0000 | <ski> | or as in dynamically replacing the current output stream, for a given block of code, nestedly ? |
| 2025-04-11 17:36:56 +0000 | <ski> | (Scheme does the latter. and the old Edinburgh-style I/O of Prolog also does that) |
| 2025-04-11 17:37:10 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 17:37:23 +0000 | <EvanR> | https://www.php.net/manual/en/outcontrol.output-buffering.php |
| 2025-04-11 17:37:55 +0000 | <EvanR> | at some point the output buffer was used like a generic communication channel between components it seems xD |
| 2025-04-11 17:39:09 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 17:40:57 +0000 | <ski> | (with-output-to-string (lambda () (display (list 2 3 5 7)))) ; => "(2 3 5 7)" |
| 2025-04-11 17:42:18 +0000 | <EvanR> | that looks more sane than the PHP version |
| 2025-04-11 17:42:24 +0000 | <EvanR> | output redirect |
| 2025-04-11 17:43:20 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
| 2025-04-11 17:43:27 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 2025-04-11 17:43:51 +0000 | <ski> | (`display' is kinda like `print'. a Haskell version of `with-output-to-string' might be `withOutputToString :: IO a -> IO String'. note how this established a dynamic extent, over which the output is redirected, and outside of this extent (say later, or in other threads), output is still sent to the usual place) |
| 2025-04-11 17:43:53 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
| 2025-04-11 17:45:17 +0000 | <EvanR> | what about an inner block which unredirected the output |
| 2025-04-11 17:45:26 +0000 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
| 2025-04-11 17:45:38 +0000 | <ski> | one would have to decide whether only the `Handle'-less operations should be affected, or also if you send explicitly to `stdout' |
| 2025-04-11 17:45:52 +0000 | <ski> | how would it do that ? |
| 2025-04-11 17:46:12 +0000 | <ski> | it could redirect back to the original `Handle', possibly |
| 2025-04-11 17:46:34 +0000 | <EvanR> | (with-output-string (lambda () (without-output-to-stdout (lambda () (display (list 2 3 5 7)))))) |
| 2025-04-11 17:46:52 +0000 | <ski> | or, i suppose one might allow some kind of "temporarily pop off the top output stream from a stack". but would there be any good reason for wanting to support this ? |
| 2025-04-11 17:47:25 +0000 | <EvanR> | s/without/with/ |
| 2025-04-11 17:47:51 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 17:50:13 +0000 | <ski> | checking Racket (which was where i tested this), i don't see an `with-output-to-port' ("port" is basically the Scheme equivalent of `Handle'). i do see `with-output-to-file', which takes a file path |
| 2025-04-11 17:50:45 +0000 | <EvanR> | hah... so i wonder what happens if you nest these dynamic extents |
| 2025-04-11 17:51:02 +0000 | <ski> | what you'd expect |
| 2025-04-11 17:51:12 +0000 | <EvanR> | part of the input won't appear in the string |
| 2025-04-11 17:51:20 +0000 | <EvanR> | part of the output won't appear in the string |
| 2025-04-11 17:51:30 +0000 | <ski> | yep |
| 2025-04-11 17:51:35 +0000 | <ski> | as intended |
| 2025-04-11 17:51:48 +0000 | <EvanR> | with-output-to-dev-null |
| 2025-04-11 17:52:02 +0000 | <ski> | it's similar to dynamic scoping of variables. or `local' in `MonadReader' |
| 2025-04-11 17:52:33 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 17:55:06 +0000 | <ski> | imagine `ReaderT (IORef Handle) IO', and looking up the current `Handle' when you do your basic I/O operations. and your "withIOHandle :: Handle -> ReaderT (IORef Handle) IO a -> ReaderT (IORef Handle) IO a' operation sets the ref, executes the action, and then sets back to the old handle (this would ignore multiple threads, though) |
| 2025-04-11 17:57:34 +0000 | <ski> | (or, i guess, using a top-level `IORef', instead of `ReaderT', if you prefer ..) |
| 2025-04-11 17:58:17 +0000 | <EvanR> | provocative idea |
| 2025-04-11 17:59:55 +0000 | <ski> | not really that much, imho |
| 2025-04-11 18:00:11 +0000 | <ski> | i suppose it depends on perspective |
| 2025-04-11 18:00:23 +0000 | <ski> | but it would make things more composable |
| 2025-04-11 18:00:35 +0000 | <EvanR> | globals are usually frowned upon xD |
| 2025-04-11 18:00:42 +0000 | <ski> | being able to run an action more like it was a separate process |
| 2025-04-11 18:00:56 +0000 | <ski> | (without actually having to spawn a separate process) |
| 2025-04-11 18:01:23 +0000 | <EvanR> | otoh running an IO action with a custom set of "global" resources of all sorts, like the output handle, the RNG, etc |
| 2025-04-11 18:01:36 +0000 | <monochrom> | stdin/out/err and FDs 0,1,2 have always been global variables (or worse). |
| 2025-04-11 18:01:45 +0000 | <ski> | there's already stuff like |
| 2025-04-11 18:01:47 +0000 | <ski> | @type System.Posix.IO.dupTo |
| 2025-04-11 18:01:48 +0000 | <lambdabot> | System.Posix.Types.Fd -> System.Posix.Types.Fd -> IO System.Posix.Types.Fd |
| 2025-04-11 18:01:48 +0000 | <ski> | yep |
| 2025-04-11 18:02:00 +0000 | <EvanR> | the errno |
| 2025-04-11 18:02:20 +0000 | <EvanR> | the FP rounding mode |
| 2025-04-11 18:02:50 +0000 | <monochrom> | I actually gave my students the unix assignment of recursive stdin/out redirection. |
| 2025-04-11 18:03:02 +0000 | <ski> | yes. those are generally bad for composability |
| 2025-04-11 18:03:38 +0000 | <monochrom> | https://www.cs.utoronto.ca/~trebla/CSCB09-latest/a3/ |
| 2025-04-11 18:03:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 18:03:49 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 2025-04-11 18:07:11 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
| 2025-04-11 18:08:17 +0000 | krei-se- | (~krei-se@p200300f1cfff4b89da9ef3fffe7fdac8.dip0.t-ipconnect.de) (Quit: ZNC 1.9.1 - https://znc.in) |
| 2025-04-11 18:08:18 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2025-04-11 18:13:49 +0000 | krei-se | (~krei-se@p50829a06.dip0.t-ipconnect.de) krei-se |
| 2025-04-11 18:15:19 +0000 | euleritian | (~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 2025-04-11 18:16:12 +0000 | euleritian | (~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de) |
| 2025-04-11 18:16:38 +0000 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
| 2025-04-11 18:17:37 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 18:21:22 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f37fdfe54bbfe31434c.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 2025-04-11 18:22:01 +0000 | jespada | (~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 2025-04-11 18:22:54 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 18:33:26 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 18:38:28 +0000 | euleritian | (~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 2025-04-11 18:38:47 +0000 | euleritian | (~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) |
| 2025-04-11 18:39:44 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
| 2025-04-11 18:40:15 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
| 2025-04-11 18:40:52 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 18:45:52 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
| 2025-04-11 18:46:06 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
| 2025-04-11 18:47:01 +0000 | hololeap | (~quassel@user/hololeap) (Quit: Bye) |
| 2025-04-11 18:47:40 +0000 | rbdr | (~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) (Quit: WeeChat 4.6.0) |
| 2025-04-11 18:48:18 +0000 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
| 2025-04-11 18:48:32 +0000 | rbdr | (~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) rbdr |
| 2025-04-11 18:49:07 +0000 | hololeap | (~quassel@user/hololeap) hololeap |
| 2025-04-11 18:51:28 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 18:52:58 +0000 | jespada | (~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) jespada |
| 2025-04-11 18:55:37 +0000 | sayurc_ | (~sayurc@177.136.41.195) sayurc |
| 2025-04-11 18:55:48 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 18:55:49 +0000 | sayurc | (~sayurc@169.150.203.34) (Ping timeout: 276 seconds) |
| 2025-04-11 18:58:27 +0000 | j1n37- | (~j1n37@user/j1n37) j1n37 |
| 2025-04-11 18:59:11 +0000 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
| 2025-04-11 18:59:43 +0000 | j1n37 | (~j1n37@user/j1n37) (Ping timeout: 276 seconds) |
| 2025-04-11 19:00:06 +0000 | caconym | (~caconym@user/caconym) (Quit: bye) |
| 2025-04-11 19:00:48 +0000 | caconym | (~caconym@user/caconym) caconym |
| 2025-04-11 19:00:58 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f3760e43f0ee11d5618.dip0.t-ipconnect.de) |
| 2025-04-11 19:01:55 +0000 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds) |
| 2025-04-11 19:01:55 +0000 | ljdarj1 | ljdarj |
| 2025-04-11 19:06:51 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 19:11:32 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-04-11 19:17:16 +0000 | sayurc_ | (~sayurc@177.136.41.195) (Ping timeout: 276 seconds) |
| 2025-04-11 19:17:17 +0000 | sayurc | (~sayurc@169.150.203.34) sayurc |
| 2025-04-11 19:18:38 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 19:20:00 +0000 | a_fantom | (~fantom@2.219.56.221) |
| 2025-04-11 19:20:06 +0000 | fantom | (~fantom@2.219.56.221) (Ping timeout: 244 seconds) |
| 2025-04-11 19:21:32 +0000 | __jmcantrell__ | (~weechat@user/jmcantrell) jmcantrell |
| 2025-04-11 19:21:33 +0000 | jmcantrell | (644f1bed9a@user/jmcantrell) (Killed (tungsten.libera.chat (Nickname regained by services))) |
| 2025-04-11 19:21:33 +0000 | __jmcantrell__ | jmcantrell |
| 2025-04-11 19:21:42 +0000 | jmcantrell_ | (644f1bed9a@user/jmcantrell) jmcantrell |
| 2025-04-11 19:23:22 +0000 | fantom | (~fantom@2.219.56.221) |
| 2025-04-11 19:23:46 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 19:24:01 +0000 | sayurc_ | (~sayurc@177.136.41.195) sayurc |
| 2025-04-11 19:24:25 +0000 | sayurc | (~sayurc@169.150.203.34) (Ping timeout: 276 seconds) |
| 2025-04-11 19:24:45 +0000 | a_fantom | (~fantom@2.219.56.221) (Ping timeout: 244 seconds) |
| 2025-04-11 19:26:02 +0000 | Googulator | (~Googulato@2a01-036d-0106-211a-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-04-11 19:26:18 +0000 | Googulator | (~Googulato@2a01-036d-0106-211a-315b-d519-517f-afe7.pool6.digikabel.hu) |
| 2025-04-11 19:26:58 +0000 | pavonia | (~user@user/siracusa) siracusa |
| 2025-04-11 19:27:04 +0000 | j1n37 | (~j1n37@user/j1n37) j1n37 |
| 2025-04-11 19:27:15 +0000 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
| 2025-04-11 19:28:19 +0000 | j1n37- | (~j1n37@user/j1n37) (Ping timeout: 276 seconds) |
| 2025-04-11 19:34:25 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 19:37:46 +0000 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
| 2025-04-11 19:39:06 +0000 | Owner_ | (~Owner@2600:1700:69cf:9000:a8ba:1089:2e3e:b3d1) |
| 2025-04-11 19:39:21 +0000 | jmcantrell | (~weechat@user/jmcantrell) (Quit: WeeChat 4.6.1) |
| 2025-04-11 19:39:21 +0000 | jmcantrell_ | jmcantrell |
| 2025-04-11 19:40:01 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 19:42:04 +0000 | notdabs | (~Owner@2600:1700:69cf:9000:5926:6835:ef1d:9af3) (Ping timeout: 260 seconds) |
| 2025-04-11 19:44:56 +0000 | euleritian | (~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 2025-04-11 19:45:30 +0000 | euleritian | (~euleritia@95.90.214.149) |
| 2025-04-11 19:49:09 +0000 | __jmcantrell__ | (~weechat@user/jmcantrell) jmcantrell |
| 2025-04-11 19:49:13 +0000 | jmcantrell | Guest8428 |
| 2025-04-11 19:49:13 +0000 | Guest8428 | (644f1bed9a@user/jmcantrell) (Killed (silver.libera.chat (Nickname regained by services))) |
| 2025-04-11 19:49:13 +0000 | __jmcantrell__ | jmcantrell |
| 2025-04-11 19:49:26 +0000 | jmcantrell_ | (644f1bed9a@user/jmcantrell) jmcantrell |
| 2025-04-11 19:50:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 19:52:02 +0000 | Owner_ | (~Owner@2600:1700:69cf:9000:a8ba:1089:2e3e:b3d1) (Quit: Leaving) |
| 2025-04-11 19:52:19 +0000 | notdabs | (~Owner@2600:1700:69cf:9000:a8ba:1089:2e3e:b3d1) |
| 2025-04-11 19:55:37 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 19:56:46 +0000 | sayurc | (~sayurc@169.150.203.34) sayurc |
| 2025-04-11 19:56:47 +0000 | sayurc_ | (~sayurc@177.136.41.195) (Ping timeout: 244 seconds) |
| 2025-04-11 19:58:30 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f3760e43f0ee11d5618.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2025-04-11 19:58:44 +0000 | acidjnk_new | (~acidjnk@p200300d6e71c4f3781d551119ad8c4a9.dip0.t-ipconnect.de) acidjnk |
| 2025-04-11 19:59:25 +0000 | rvalue- | (~rvalue@user/rvalue) rvalue |
| 2025-04-11 20:00:23 +0000 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 265 seconds) |
| 2025-04-11 20:02:19 +0000 | tromp | (~textual@2001:1c00:3487:1b00:d08a:2428:1bec:2dd5) |
| 2025-04-11 20:06:00 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 20:08:10 +0000 | rvalue- | rvalue |
| 2025-04-11 20:09:22 +0000 | vanishingideal | (~vanishing@user/vanishingideal) (Remote host closed the connection) |
| 2025-04-11 20:10:51 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 20:19:38 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 20:23:05 +0000 | cheater | (~Username@user/cheater) cheater |
| 2025-04-11 20:24:08 +0000 | rekahsoft | (~rekahsoft@bras-base-orllon1103w-grc-15-174-95-4-83.dsl.bell.ca) rekahsoft |
| 2025-04-11 20:27:28 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 20:28:18 +0000 | michalz | (~michalz@185.246.207.205) (Remote host closed the connection) |
| 2025-04-11 20:37:42 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 20:42:02 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 20:43:35 +0000 | <EvanR> | in classic parser with external interface String -> Either Error Expr what's probably happening is a big expression is built up and you can only access it after it is known there was no error somewhere (result finally evaluates to Right something) |
| 2025-04-11 20:44:14 +0000 | <EvanR> | but if it is the case that the likelihood of an error is very low, and you want to start processing the Expr lazily |
| 2025-04-11 20:44:45 +0000 | <EvanR> | while taking some big performance trade off if there really is an error |
| 2025-04-11 20:45:09 +0000 | <EvanR> | is there a type for that |
| 2025-04-11 20:45:34 +0000 | <tomsmeding> | IO, and throw an IO exception (the error case is actually quite fast here) |
| 2025-04-11 20:46:12 +0000 | <EvanR> | IO... lazily... huh |
| 2025-04-11 20:46:14 +0000 | <tomsmeding> | ah no, I'm misremembering: it was using `String -> Expr` and throwing `error` on an error, then catching that in IO |
| 2025-04-11 20:48:02 +0000 | <EvanR> | ok that sounds pretty good but could you somehow do it without IO |
| 2025-04-11 20:48:12 +0000 | <tomsmeding> | you cannot catch asynchronous exceptions without IO, so no |
| 2025-04-11 20:48:52 +0000 | <EvanR> | I seem to remember some suggestion from ski a million years ago ... like ... put the processing within the parser or something |
| 2025-04-11 20:49:21 +0000 | <tomsmeding> | as in, instead of parsing an arithmetic expression, parse the evaluation of that expression? |
| 2025-04-11 20:49:59 +0000 | <tomsmeding> | I've seen students do that when told to write a parser that just produces a syntax tree (their parser only ever produced the AST node for a literal number -- the evaluated expression) |
| 2025-04-11 20:50:16 +0000 | <EvanR> | arithmetic might be a long shot because of reasons |
| 2025-04-11 20:50:38 +0000 | <EvanR> | but something that could be done lazily |
| 2025-04-11 20:51:04 +0000 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 2025-04-11 20:51:11 +0000 | <EvanR> | like size of expression |
| 2025-04-11 20:51:13 +0000 | <EvanR> | or something |
| 2025-04-11 20:51:14 +0000 | <tomsmeding> | if you put the processing inside the parser, you don't get automatic laziness -- you are instead forced to manually compute a little part of the result each time a little part of the expression becomes available |
| 2025-04-11 20:52:02 +0000 | <EvanR> | or, an unparsing (e.g. in another language, assuming the languages would allow it) |
| 2025-04-11 20:52:46 +0000 | <EvanR> | collapsing an expression incrementally, or streaming something generated from the expression could both benefit from starting sooner |
| 2025-04-11 20:53:04 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 20:53:31 +0000 | <tomsmeding> | I don't think you're going to get any automatic laziness here |
| 2025-04-11 20:53:44 +0000 | <EvanR> | what do you mean by automatic |
| 2025-04-11 20:54:12 +0000 | ystael | (~ystael@user/ystael) (Ping timeout: 276 seconds) |
| 2025-04-11 20:54:13 +0000 | <tomsmeding> | in that you write a function that computes e.g. the size of an expression as if the whole expression is already evaluated, and then you do the "magic" of stuffing it inside the parser, and it's somehow computed lazily |
| 2025-04-11 20:55:03 +0000 | <monochrom> | I don't know how to do: be incremental and fast when there will be no error in the future, but correct (gives Left error) and OK to be slow when there will be an error in the future. Basically incremental iff no access to future. |
| 2025-04-11 20:55:11 +0000 | <EvanR> | each step of the parser could bang pattern the accumulator in that case |
| 2025-04-11 20:55:11 +0000 | <tomsmeding> | if you can write your function as a fold (as in catamorphism), then you can replace expression constructors in your parser by the algebra of that fold and get "lazy" computation of your result |
| 2025-04-11 20:55:14 +0000 | <monochrom> | But I know two options. |
| 2025-04-11 20:55:17 +0000 | <tomsmeding> | but you have to do the expression as a fold manually |
| 2025-04-11 20:55:55 +0000 | <tomsmeding> | EvanR: which accumulator? If you've just written a function that computes the final result, the only thing you can force is that final result -- which you can't, halway during parsing |
| 2025-04-11 20:56:00 +0000 | <tomsmeding> | *halfway |
| 2025-04-11 20:56:01 +0000 | <EvanR> | well, I don't think I was even thinking about a distinction between "automatic and manual" |
| 2025-04-11 20:56:18 +0000 | <EvanR> | just not building an entire expression before starting the next stage |
| 2025-04-11 20:56:18 +0000 | <tomsmeding> | and if you don't force anything, nothing will happen, so no streaming will happen |
| 2025-04-11 20:56:31 +0000 | <EvanR> | well you're always forcing something somewhere |
| 2025-04-11 20:56:43 +0000 | <monochrom> | 1. Assume no syntax error. But if you do detect a syntax error, use error, don't use Left. Then it is easier to be incremental (still requires clever coding). |
| 2025-04-11 20:56:53 +0000 | <tomsmeding> | what I'm saying is: yes you can achieve what you want by putting the computation inside the parser, but it's not a magic wand: you'll have to do work to rewrite your computation to fit a very specific form for that to work |
| 2025-04-11 20:57:05 +0000 | <tomsmeding> | and some computations cannot be rewritten in that special form at all |
| 2025-04-11 20:57:20 +0000 | <tomsmeding> | (many, actually) |
| 2025-04-11 20:57:39 +0000 | <EvanR> | not really looking for magic just existence xD |
| 2025-04-11 20:57:40 +0000 | <monochrom> | 2. Do what SAX did (remember those?): Use ParserT (Cont r) so you can yield nodes/subtrees incrementally ASAP. |
| 2025-04-11 20:57:48 +0000 | <EvanR> | SAX? |
| 2025-04-11 20:57:54 +0000 | <tomsmeding> | EvanR: it doesn't even always exist, only if your computation can be written as a fold |
| 2025-04-11 20:58:03 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2025-04-11 20:58:13 +0000 | <tomsmeding> | monochrom: SAX is "emit events for each constructor parsed"? |
| 2025-04-11 20:58:16 +0000 | <EvanR> | interesting theory |
| 2025-04-11 20:58:22 +0000 | <EvanR> | if and only if it's a fold |
| 2025-04-11 20:58:30 +0000 | <monochrom> | Remember that new paradigm of XML parsing where you tell the parser "here is my suite of callbacks" and the parser calls one callback per node? |
| 2025-04-11 20:58:39 +0000 | <monochrom> | Yeah that. |
| 2025-04-11 20:58:44 +0000 | <tomsmeding> | well, if you parser never inspects any trees it built, then the "if" holds -- not sure about the "only if" |
| 2025-04-11 20:58:51 +0000 | <tomsmeding> | if your parser inspects trees it built, then things get more complicated |
| 2025-04-11 20:59:08 +0000 | <monochrom> | It's trivial in Python, and if you know Cont, also trivial in Haskell. :) |
| 2025-04-11 20:59:23 +0000 | <tomsmeding> | monochrom: the "new" in that sentence is a bit out of place :) |
| 2025-04-11 20:59:43 +0000 | <monochrom> | It was new back then compared to other XML parsers way back then. |
| 2025-04-11 21:00:00 +0000 | <tomsmeding> | undoubtedly |
| 2025-04-11 21:00:17 +0000 | <monochrom> | It also broke a lot of programmers' minds. :) |
| 2025-04-11 21:00:34 +0000 | <EvanR> | I had no idea XML was so keen on performance |
| 2025-04-11 21:00:37 +0000 | <tomsmeding> | the first time I met it I honestly just found it needlessly messy |
| 2025-04-11 21:00:44 +0000 | <EvanR> | it sounded like bloat mostly |
| 2025-04-11 21:01:11 +0000 | <monochrom> | But it was a necessary invention for obvious reasons. Because before it, they did what you are seeing right now, taking forever to build a huge tree in memory until EOF. |
| 2025-04-11 21:01:17 +0000 | Square | (~Square4@user/square) (Ping timeout: 265 seconds) |
| 2025-04-11 21:01:56 +0000 | <monochrom> | which was doubly unsustainable back then because they too didn't have more than 1GB RAM. |
| 2025-04-11 21:01:56 +0000 | <geekosaur> | it had to be keen on performance, when a simple thing had to be represented as a huge bloated tree of tags |
| 2025-04-11 21:02:28 +0000 | kimiamania | (~65804703@user/kimiamania) (Quit: PegeLinux) |
| 2025-04-11 21:02:52 +0000 | kimiamania9 | (~65804703@user/kimiamania) kimiamania |
| 2025-04-11 21:03:30 +0000 | <EvanR> | well ParserT (Cont r) has just made my brain explode |
| 2025-04-11 21:03:40 +0000 | <monochrom> | Oh yeah I just need the direction "incremental implies no access to future". |
| 2025-04-11 21:04:24 +0000 | <EvanR> | you can only use Acme.now |
| 2025-04-11 21:05:29 +0000 | euleritian | (~euleritia@95.90.214.149) (Ping timeout: 260 seconds) |
| 2025-04-11 21:05:44 +0000 | euleritian | (~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de) |
| 2025-04-11 21:07:16 +0000 | <monochrom> | If the probability of syntax error is low enough to ignore: Step 1: Use e.g. "String -> (String, a)". Step 2: implement >>= like "m >>= k = \inp -> case m inp of ~(mid, a) -> ..." i.e. increase laziness in your >>=. |
| 2025-04-11 21:07:51 +0000 | <monochrom> | (Step 3: If you do run into syntax error, use error/bottom, be partial.) |
| 2025-04-11 21:08:51 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 21:09:09 +0000 | Pozyomka | (~pyon@user/pyon) (Ping timeout: 252 seconds) |
| 2025-04-11 21:11:10 +0000 | Pozyomka | (~pyon@user/pyon) pyon |
| 2025-04-11 21:11:29 +0000 | <EvanR> | (warning reinventing a wheel probably) data Incremental a = InProgress a (Incremental a) | Done a | Failed |
| 2025-04-11 21:11:59 +0000 | <tomsmeding> | is that for a parser of [a]? |
| 2025-04-11 21:12:18 +0000 | <EvanR> | no the payload of InProgress is probably pointless here |
| 2025-04-11 21:12:31 +0000 | <EvanR> | but I was thinking it was like, the accumulator for a number of expression nodes |
| 2025-04-11 21:12:37 +0000 | <tomsmeding> | if the payload is not there, what's the point of emitting an InProgress? |
| 2025-04-11 21:12:44 +0000 | <EvanR> | as a basic computation to do on a tree |
| 2025-04-11 21:13:15 +0000 | <tomsmeding> | without the payload in InProgress, Incremental a is isomorphic to (Natural, Maybe a) |
| 2025-04-11 21:13:21 +0000 | <EvanR> | for this problem, I don't know. But in general it would let you cancel out of a computation early |
| 2025-04-11 21:13:29 +0000 | <tomsmeding> | with the payload, it's isomorphic to ([a], Maybe a) |
| 2025-04-11 21:13:42 +0000 | <EvanR> | sure |
| 2025-04-11 21:13:53 +0000 | <EvanR> | not sure |
| 2025-04-11 21:14:13 +0000 | <tomsmeding> | its laziness properties are a bit different, sure |
| 2025-04-11 21:14:21 +0000 | <EvanR> | e.g. an external agent could decide, this chain of InProgress is too long, give up |
| 2025-04-11 21:14:31 +0000 | <tomsmeding> | but if this is not supposed to be a parser of [a], then I'm not sure what that 'a' is supposed to be :) |
| 2025-04-11 21:14:32 +0000 | <EvanR> | but that's probably a different subject |
| 2025-04-11 21:14:38 +0000 | <EvanR> | it's not a parser of a |
| 2025-04-11 21:14:41 +0000 | <tomsmeding> | right, but what does that give you for your original question? |
| 2025-04-11 21:15:29 +0000 | <EvanR> | the parser's result would not survive if I got what I was asking for |
| 2025-04-11 21:15:33 +0000 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla |
| 2025-04-11 21:15:46 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 21:15:46 +0000 | <EvanR> | it would be an intermediate |
| 2025-04-11 21:16:11 +0000 | <EvanR> | alright the a would be an approximation of the computation |
| 2025-04-11 21:16:15 +0000 | <tomsmeding> | but all the intermediates here are of the same type; would they be subtrees of the resulting expression? If so, how does the consumer know _which_ subtrees? |
| 2025-04-11 21:16:23 +0000 | <EvanR> | i.e. if it was a count, the count would increase toward the final number |
| 2025-04-11 21:16:37 +0000 | <EvanR> | or an eventual error |
| 2025-04-11 21:17:12 +0000 | <tomsmeding> | (and if you're considering it to be a count, then you're simultaneously doing this idea of putting the computation inside the parser -- and then that idea _alone_ already gives you the required laziness, no need to also introduce Incremental) |
| 2025-04-11 21:17:12 +0000 | <EvanR> | in this example the consumer would not know and not care |
| 2025-04-11 21:17:31 +0000 | <EvanR> | sure |
| 2025-04-11 21:17:51 +0000 | <EvanR> | guess I'll try it and then maybe get a better mental model of what's possible |
| 2025-04-11 21:18:15 +0000 | rbdr | (~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 2025-04-11 21:20:21 +0000 | Pozyomka | (~pyon@user/pyon) (Ping timeout: 248 seconds) |
| 2025-04-11 21:22:55 +0000 | <monochrom> | Yes it is a reinvented wheel. But don't worry! I think everyone reinvents that wheel instead of importing from a library. |
| 2025-04-11 21:23:12 +0000 | <EvanR> | an XML library? |
| 2025-04-11 21:23:42 +0000 | <monochrom> | Actually you want: data Incremental a = InProgress a (String -> Incremental a) | Done a | Failed |
| 2025-04-11 21:23:56 +0000 | <tomsmeding> | (also, I think that reinventing wheels is a very good way of getting intuition for the design space) |
| 2025-04-11 21:24:05 +0000 | <EvanR> | maybe it's like, instead of having the parser build the Expr tree, it applies a bunch of "builder" functions which might build a tree, or might do something else |
| 2025-04-11 21:24:10 +0000 | <monochrom> | You want a String-> function there for feeding it the rest of input. |
| 2025-04-11 21:24:21 +0000 | <EvanR> | SAX callbacks |
| 2025-04-11 21:24:49 +0000 | <EvanR> | or "a fold" |
| 2025-04-11 21:24:54 +0000 | <monochrom> | Or maybe not. It depends on the rest of your design. |
| 2025-04-11 21:26:42 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 21:28:27 +0000 | <EvanR> | (your logic about needing to look into the future to decide if it should be slow is funny, it would be just fine if it's not slow) |
| 2025-04-11 21:31:27 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-04-11 21:32:39 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 21:41:55 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich) |
| 2025-04-11 21:42:06 +0000 | ystael | (~ystael@user/ystael) ystael |
| 2025-04-11 21:42:18 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 21:42:27 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 21:45:53 +0000 | Pozyomka | (~pyon@user/pyon) pyon |
| 2025-04-11 21:47:04 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 21:52:14 +0000 | Guest87 | (~Guest87@2620:72:0:1f18:f98c:1934:e021:b784) |
| 2025-04-11 21:53:55 +0000 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 276 seconds) |
| 2025-04-11 21:57:51 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 22:02:07 +0000 | peterbecich1 | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 22:03:29 +0000 | <tomsmeding> | has there been a time when GHC.Generics did not produce balanced trees but instead a right- or left-leaning tree? |
| 2025-04-11 22:04:37 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2025-04-11 22:04:58 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds) |
| 2025-04-11 22:08:56 +0000 | peterbecich1 | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 2025-04-11 22:11:52 +0000 | tabaqui | (~tabaqui@167.71.80.236) (Ping timeout: 252 seconds) |
| 2025-04-11 22:12:17 +0000 | tromp | (~textual@2001:1c00:3487:1b00:d08a:2428:1bec:2dd5) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2025-04-11 22:12:52 +0000 | emmanuelux | (~emmanuelu@user/emmanuelux) emmanuelux |
| 2025-04-11 22:15:53 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 22:21:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 22:22:25 +0000 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 2025-04-11 22:25:14 +0000 | sayurc | (~sayurc@169.150.203.34) (Quit: Konversation terminated!) |
| 2025-04-11 22:25:51 +0000 | <geekosaur> | now, aiui |
| 2025-04-11 22:26:06 +0000 | <geekosaur> | my understanding is that if you want balanced trees you want sop-generics |
| 2025-04-11 22:26:12 +0000 | <tomsmeding> | other way round |
| 2025-04-11 22:26:22 +0000 | <tomsmeding> | sop-generics produces a list of lists; GHC.Generics produces balanced trees |
| 2025-04-11 22:26:34 +0000 | <tomsmeding> | % :seti -XDeriveGeneric |
| 2025-04-11 22:26:34 +0000 | <yahb2> | <no output> |
| 2025-04-11 22:26:50 +0000 | <tomsmeding> | % data T = A | B | C | D | E | F deriving (Show, Generic) |
| 2025-04-11 22:26:50 +0000 | <yahb2> | <interactive>:61:48: error: [GHC-76037] ; Not in scope: type constructor or class ‘Generic’ |
| 2025-04-11 22:26:55 +0000 | <tomsmeding> | % import GHC.Generics |
| 2025-04-11 22:26:55 +0000 | <yahb2> | <no output> |
| 2025-04-11 22:26:57 +0000 | <tomsmeding> | % data T = A | B | C | D | E | F deriving (Show, Generic) |
| 2025-04-11 22:26:57 +0000 | <yahb2> | <no output> |
| 2025-04-11 22:27:05 +0000 | <tomsmeding> | % :k! Rep T () |
| 2025-04-11 22:27:05 +0000 | <yahb2> | Rep T () :: * ; = M1 ; D ; (MetaData "T" "Ghci13" "interactive" False) ; ((M1 C (MetaCons "A" PrefixI False) U1 ; :+: (M1 C (MetaCons "B" PrefixI False) U1 ; :+: M1 C (... |
| 2025-04-11 22:27:08 +0000 | <tomsmeding> | meh |
| 2025-04-11 22:27:26 +0000 | <tomsmeding> | %% :k! Rep T () |
| 2025-04-11 22:27:27 +0000 | <yahb2> | https://paste.tomsmeding.com/PlhqwSXT |
| 2025-04-11 22:28:07 +0000 | <tomsmeding> | (A + (B + C)) + (D + (E + F)) |
| 2025-04-11 22:28:51 +0000 | gawen | (~gawen@user/gawen) (Quit: cya) |
| 2025-04-11 22:28:54 +0000 | <tomsmeding> | geekosaur: the "sop" in sop-generics is "sum-of-products", where "sum" is used a contrastive to "plus", like `sum` vs (+) |
| 2025-04-11 22:31:37 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 22:35:14 +0000 | gawen | (~gawen@user/gawen) gawen |
| 2025-04-11 22:36:39 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 22:39:13 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
| 2025-04-11 22:42:05 +0000 | <emojelly> | pipes is so, so, so much faster than coroutines... |
| 2025-04-11 22:42:19 +0000 | <EvanR> | pipes, haven't heard about that one for a minute |
| 2025-04-11 22:43:38 +0000 | <emojelly> | For my specific needs it seems quite fitting. |
| 2025-04-11 22:43:57 +0000 | sayurc | (~sayurc@169.150.203.34) sayurc |
| 2025-04-11 22:44:08 +0000 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
| 2025-04-11 22:44:42 +0000 | <EvanR> | > p (const Z) N Err "(a b ? d e f)" |
| 2025-04-11 22:44:48 +0000 | <EvanR> | N [Z,Z,Err] |
| 2025-04-11 22:44:54 +0000 | <EvanR> | this is not great for reasons |
| 2025-04-11 22:45:13 +0000 | <EvanR> | though it is kind of lazy |
| 2025-04-11 22:47:26 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 22:50:33 +0000 | gawen | (~gawen@user/gawen) (Quit: cya) |
| 2025-04-11 22:53:04 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 22:56:24 +0000 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
| 2025-04-11 22:56:46 +0000 | gawen | (~gawen@user/gawen) gawen |
| 2025-04-11 23:01:33 +0000 | <EvanR> | if you can get away with folding over tokens then clearly there is more laziness |
| 2025-04-11 23:03:13 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 23:06:17 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
| 2025-04-11 23:08:40 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2025-04-11 23:09:51 +0000 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2025-04-11 23:11:33 +0000 | polyphem | (~rod@pd9fbfc2f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2025-04-11 23:16:55 +0000 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 2025-04-11 23:20:05 +0000 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
| 2025-04-11 23:23:06 +0000 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds) |
| 2025-04-11 23:23:07 +0000 | ljdarj1 | ljdarj |
| 2025-04-11 23:32:49 +0000 | prolic_ | (~sasa@181.122.135.9) prolic_ |
| 2025-04-11 23:37:02 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 23:41:18 +0000 | ft | (~ft@p508db594.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 2025-04-11 23:41:59 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-04-11 23:42:29 +0000 | ft | (~ft@p4fc2a6e6.dip0.t-ipconnect.de) ft |
| 2025-04-11 23:50:46 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-04-11 23:51:53 +0000 | weary-traveler | (~user@user/user363627) user363627 |
| 2025-04-11 23:54:44 +0000 | sprotte24 | (~sprotte24@p200300d16f1c5b003c76b51cf90902ef.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 2025-04-11 23:55:42 +0000 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-04-11 23:59:33 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |