Logs: liberachat/#haskell
| 2026-02-08 22:56:04 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-08 22:58:01 | × | Square2 quits (~Square@user/square) (Remote host closed the connection) |
| 2026-02-08 22:59:20 | → | Square2 joins (~Square@user/square) |
| 2026-02-08 23:01:10 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-02-08 23:01:36 | <EvanR> | returning an IO action is basically free monad if you think IO is like a huge free monad |
| 2026-02-08 23:02:19 | <EvanR> | if the semantic value is a command to be executed... then the command data type or the command action itself could both be considered that |
| 2026-02-08 23:02:48 | → | krei-se joins (~krei-se@p200300f1cfff3e880001000000000001.dip0.t-ipconnect.de) |
| 2026-02-08 23:03:06 | × | tromp quits (~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-02-08 23:03:49 | <EvanR> | parse don't validate violation seems to be a different situation, where you validate something and then later run another parser on it |
| 2026-02-08 23:04:03 | <EvanR> | the original data |
| 2026-02-08 23:07:02 | <chromoblob> | why isn't IO a free monad actually? |
| 2026-02-08 23:07:31 | <ncf> | can't pattern match on it |
| 2026-02-08 23:07:36 | <EvanR> | performance, and or "we didn't think of it" |
| 2026-02-08 23:08:13 | × | xff0x quits (~xff0x@2405:6580:b080:900:cadf:d9b9:dcb4:a899) (Quit: xff0x) |
| 2026-02-08 23:10:14 | <mauke> | is this that "final tagless" thing |
| 2026-02-08 23:10:16 | <chromoblob> | ncf: case putStr "123" of PutStr "123" -> ... |
| 2026-02-08 23:10:47 | <ncf> | oh you mean from a design perspective |
| 2026-02-08 23:11:27 | <EvanR> | the IO system predates free monads being popularized by the blogosphere |
| 2026-02-08 23:11:49 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-08 23:13:00 | → | xff0x joins (~xff0x@2405:6580:b080:900:94ad:d9ab:f90:90c7) |
| 2026-02-08 23:15:52 | → | twb joins (~twb@user/twb) |
| 2026-02-08 23:16:31 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-08 23:24:24 | <geekosaur> | also I think it doesn't extend nicely to threads? |
| 2026-02-08 23:26:55 | <dolio> | There's multiple problems with it. What about FFI? |
| 2026-02-08 23:27:18 | <geekosaur> | that too, yes |
| 2026-02-08 23:27:37 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-08 23:27:44 | <geekosaur> | although I can think of ways to make it work, especially given that FFI already doesn't really handle varargs |
| 2026-02-08 23:29:33 | <dolio> | I'm sure there are ways to do it, but the question is why you would, when being a free monad is likely not valuable at all. |
| 2026-02-08 23:29:56 | <dolio> | Most likely the opposite. |
| 2026-02-08 23:30:49 | <dolio> | IO specifically, that is. |
| 2026-02-08 23:32:11 | <geekosaur> | tbh I've always considered that approach to be more useful conceptually than implementationally |
| 2026-02-08 23:33:34 | <dolio> | If you're going to write multiple interpreters for one, then it might be worth it. But you want IO to be as low overhead as possible, bascially. |
| 2026-02-08 23:34:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-08 23:45:38 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-08 23:47:20 | → | rainbyte joins (~rainbyte@186.22.19.214) |
| 2026-02-08 23:50:11 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-08 23:53:18 | × | oskarw quits (~user@user/oskarw) (Ping timeout: 256 seconds) |
| 2026-02-09 00:01:24 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 00:04:14 | × | _JusSx_ quits (~username@37.163.117.200) (Ping timeout: 244 seconds) |
| 2026-02-09 00:06:18 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-09 00:09:11 | → | forell joins (~forell@user/forell) |
| 2026-02-09 00:17:11 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 00:18:41 | × | trickard quits (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-09 00:18:55 | → | trickard_ joins (~trickard@cpe-61-98-47-163.wireline.com.au) |
| 2026-02-09 00:20:07 | → | humasect_ joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2026-02-09 00:21:58 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-09 00:24:57 | × | emmanuelux quits (~em@user/emmanuelux) (Read error: Connection reset by peer) |
| 2026-02-09 00:28:16 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-02-09 00:33:02 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 00:35:05 | × | Tuplanolla quits (~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Ping timeout: 250 seconds) |
| 2026-02-09 00:38:43 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-09 00:49:01 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 00:50:13 | × | xff0x quits (~xff0x@2405:6580:b080:900:94ad:d9ab:f90:90c7) (Ping timeout: 244 seconds) |
| 2026-02-09 00:53:12 | <ski> | EvanR : with the former, you can do alternative analyses/semantics (perhaps sending the command to a different process, or pretty-printing it, or analyzing commands for potential trouble interaction, &c.) |
| 2026-02-09 00:53:40 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-02-09 00:54:19 | <ski> | (cf. using a `String' as an error message, vs. a data type. with the latter, you can e.g. localize it to different languages, portray it differently for different UIs, &c.) |
| 2026-02-09 00:54:35 | <ski> | @quote stark |
| 2026-02-09 00:54:35 | <lambdabot> | AlanPerlis says: The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information. |
| 2026-02-09 01:01:17 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 01:03:59 | × | tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 2026-02-09 01:14:03 | <jreicher> | String is almost not a type at all. |
| 2026-02-09 01:24:05 | → | omidmash6 joins (~omidmash@user/omidmash) |
| 2026-02-09 01:26:36 | × | omidmash quits (~omidmash@user/omidmash) (Ping timeout: 265 seconds) |
| 2026-02-09 01:26:36 | omidmash6 | is now known as omidmash |
| 2026-02-09 01:26:43 | × | trickard_ quits (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-09 01:26:56 | → | trickard_ joins (~trickard@cpe-61-98-47-163.wireline.com.au) |
| 2026-02-09 01:28:09 | × | Square2 quits (~Square@user/square) (Ping timeout: 260 seconds) |
| 2026-02-09 01:35:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-09 01:42:00 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-02-09 01:42:30 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Client Quit) |
| 2026-02-09 01:44:20 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds) |
| 2026-02-09 01:45:01 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-02-09 01:47:02 | × | emmanuelux quits (~em@user/emmanuelux) (Read error: Connection reset by peer) |
| 2026-02-09 01:47:24 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 01:49:42 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 2026-02-09 01:50:19 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-02-09 01:52:32 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-09 01:53:42 | → | emmanuelux_ joins (~em@2a01cb011051ddce36cff6fffefa7e31.ipv6.abo.wanadoo.fr) |
| 2026-02-09 01:53:43 | × | emmanuelux quits (~em@user/emmanuelux) (Read error: Connection reset by peer) |
| 2026-02-09 01:59:27 | × | twb quits (~twb@user/twb) (Read error: Connection reset by peer) |
| 2026-02-09 01:59:49 | → | twb joins (~twb@user/twb) |
| 2026-02-09 02:00:55 | × | otto_s quits (~user@p5de2f96c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 2026-02-09 02:01:45 | → | weary-traveler joins (~user@user/user363627) |
| 2026-02-09 02:02:23 | → | otto_s joins (~user@p5b044c1a.dip0.t-ipconnect.de) |
| 2026-02-09 02:02:45 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 2026-02-09 02:02:50 | → | user363627 joins (~user@user/user363627) |
| 2026-02-09 02:03:30 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 02:03:35 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Quit: xff0x) |
| 2026-02-09 02:03:48 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-02-09 02:04:06 | × | emmanuelux_ quits (~em@2a01cb011051ddce36cff6fffefa7e31.ipv6.abo.wanadoo.fr) (Ping timeout: 244 seconds) |
| 2026-02-09 02:06:02 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-02-09 02:07:06 | × | weary-traveler quits (~user@user/user363627) (Ping timeout: 244 seconds) |
| 2026-02-09 02:08:08 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-09 02:10:26 | × | emmanuelux quits (~em@user/emmanuelux) (Read error: Connection reset by peer) |
| 2026-02-09 02:13:48 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-02-09 02:17:49 | <ncf> | huh? |
| 2026-02-09 02:18:53 | ← | twb parts (~twb@user/twb) (rcirc on GNU Emacs 30.1) |
| 2026-02-09 02:19:17 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 02:26:47 | <jreicher> | I just mean it's often a bucket for unstructured data. Some uses I've seen feel more like the developer not bothering to figure out the type rather than really determining it's a String. |
| 2026-02-09 02:26:56 | × | kimiamania4 quits (~b4b260c9@user/kimiamania) (Quit: Ping timeout (120 seconds)) |
All times are in UTC.