Newest at the top
2025-05-12 23:03:47 +0200 | <Rembane> | A good thing |
2025-05-12 23:02:50 +0200 | <Rembane> | Laziness is a thing |
2025-05-12 23:02:16 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-05-12 23:02:11 +0200 | <EvanR> | this is haskell, we can do less |
2025-05-12 23:02:09 +0200 | euleritian | (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) |
2025-05-12 23:01:38 +0200 | JeremyB99 | (~JeremyB99@2607:fb91:10e0:5b80:95fd:7897:b476:7002) (Read error: Connection reset by peer) |
2025-05-12 23:01:21 +0200 | <EvanR> | by generalizing from IO to m we restricted what this function could possibly do, seems like a general property of polymorphism |
2025-05-12 23:01:05 +0200 | euleritian | (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2025-05-12 22:59:03 +0200 | <monochrom> | Or you may like: Explicit dictionary passing. Because you can imagine you had "class Monad m => MonadVM m where foo :: Char -> m (); bar :: m Char" so step was "step :: MonadVM m => VM -> m VM", but then you decided to delete the class and pass the two methods as arguments. |
2025-05-12 22:58:39 +0200 | <EvanR> | testing, interesting theory |
2025-05-12 22:55:52 +0200 | <monochrom> | Now, what is that called? Answer: Dependency injection. >:) |
2025-05-12 22:55:03 +0200 | <monochrom> | You can do mock testing by picking something else for m. If you pick the free monad for m, then write one interpreter for IO, another interpreter for mock testing. |
2025-05-12 22:54:06 +0200 | jespada | (~jespada@r179-25-209-21.dialup.adsl.anteldata.net.uy) jespada |
2025-05-12 22:53:00 +0200 | jespada | (~jespada@r179-25-209-21.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2025-05-12 22:51:11 +0200 | JeremyB99 | (~JeremyB99@2607:fb91:10e0:5b80:95fd:7897:b476:7002) |
2025-05-12 22:51:03 +0200 | JeremyB99 | (~JeremyB99@2607:fb91:10e0:5b80:95fd:7897:b476:7002) (Remote host closed the connection) |
2025-05-12 22:51:02 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-05-12 22:50:15 +0200 | sw4n | (~sw4n@2605:59c0:413f:3110:831:13fb:a2fa:9c07) (Remote host closed the connection) |
2025-05-12 22:49:45 +0200 | sw4n | (~sw4n@2605:59c0:413f:3110:831:13fb:a2fa:9c07) |
2025-05-12 22:48:51 +0200 | euleritian | (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) |
2025-05-12 22:48:46 +0200 | <EvanR> | (and I'm not even sure what the consequences are, unless you pick m = IO) |
2025-05-12 22:48:01 +0200 | <EvanR> | instead of doing step :: VM -> IO VM, do step :: Monad m => (Char -> m ()) -> (m Char) -> VM -> m VM and now your algorithm is parameterized by all monads ever |
2025-05-12 22:48:00 +0200 | euleritian | (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2025-05-12 22:48:00 +0200 | JeremyB99 | (~JeremyB99@2607:fb91:10e0:5b80:95fd:7897:b476:7002) |
2025-05-12 22:46:36 +0200 | <EvanR> | everybody knows that if you make an algebraic data type to represent the actions and string them together with lambdas in just the right way you're doing the free monad. Now what is this called |
2025-05-12 22:44:12 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-05-12 22:43:45 +0200 | Square2 | (~Square@user/square) (Ping timeout: 268 seconds) |
2025-05-12 22:42:24 +0200 | JeremyB99 | (~JeremyB99@172.87.18.1) (Read error: Connection reset by peer) |
2025-05-12 22:42:05 +0200 | euleritian | (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) |
2025-05-12 22:41:18 +0200 | euleritian | (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2025-05-12 22:40:31 +0200 | michalz | (~michalz@185.246.207.203) (Remote host closed the connection) |
2025-05-12 22:38:39 +0200 | JeremyB99 | (~JeremyB99@172.87.18.1) |
2025-05-12 22:38:23 +0200 | JeremyB99 | (~JeremyB99@172.87.18.1) (Remote host closed the connection) |
2025-05-12 22:33:22 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-05-12 22:31:48 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
2025-05-12 22:29:36 +0200 | euleritian | (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) |
2025-05-12 22:29:19 +0200 | euleritian | (~euleritia@dynamic-176-006-133-103.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
2025-05-12 22:28:24 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-05-12 22:24:41 +0200 | natto17 | (~natto@129.154.243.159) natto |
2025-05-12 22:24:19 +0200 | rvalue- | rvalue |
2025-05-12 22:19:45 +0200 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 260 seconds) |
2025-05-12 22:19:32 +0200 | rvalue- | (~rvalue@user/rvalue) rvalue |
2025-05-12 22:19:06 +0200 | JeremyB99 | (~JeremyB99@172.87.18.1) |
2025-05-12 22:18:52 +0200 | JeremyB99 | (~JeremyB99@172.87.18.1) (Remote host closed the connection) |
2025-05-12 22:17:53 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2025-05-12 22:17:40 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-05-12 22:16:28 +0200 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2025-05-12 22:12:38 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-05-12 22:11:35 +0200 | natto17 | (~natto@129.154.243.159) (Ping timeout: 260 seconds) |
2025-05-12 22:06:34 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |