2025/05/12

Newest at the top

2025-05-12 23:22:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-05-12 23:21:59 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2025-05-12 23:17:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-05-12 23:16:33 +0200takuan(~takuan@d8D86B601.access.telenet.be) (Ping timeout: 248 seconds)
2025-05-12 23:07:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
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 +0200merijn(~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 +0200euleritian(~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
2025-05-12 23:01:38 +0200JeremyB99(~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 +0200euleritian(~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 +0200jespada(~jespada@r179-25-209-21.dialup.adsl.anteldata.net.uy) jespada
2025-05-12 22:53:00 +0200jespada(~jespada@r179-25-209-21.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-05-12 22:51:11 +0200JeremyB99(~JeremyB99@2607:fb91:10e0:5b80:95fd:7897:b476:7002)
2025-05-12 22:51:03 +0200JeremyB99(~JeremyB99@2607:fb91:10e0:5b80:95fd:7897:b476:7002) (Remote host closed the connection)
2025-05-12 22:51:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-05-12 22:50:15 +0200sw4n(~sw4n@2605:59c0:413f:3110:831:13fb:a2fa:9c07) (Remote host closed the connection)
2025-05-12 22:49:45 +0200sw4n(~sw4n@2605:59c0:413f:3110:831:13fb:a2fa:9c07)
2025-05-12 22:48:51 +0200euleritian(~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 +0200euleritian(~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2025-05-12 22:48:00 +0200JeremyB99(~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 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-05-12 22:43:45 +0200Square2(~Square@user/square) (Ping timeout: 268 seconds)
2025-05-12 22:42:24 +0200JeremyB99(~JeremyB99@172.87.18.1) (Read error: Connection reset by peer)
2025-05-12 22:42:05 +0200euleritian(~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
2025-05-12 22:41:18 +0200euleritian(~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2025-05-12 22:40:31 +0200michalz(~michalz@185.246.207.203) (Remote host closed the connection)
2025-05-12 22:38:39 +0200JeremyB99(~JeremyB99@172.87.18.1)
2025-05-12 22:38:23 +0200JeremyB99(~JeremyB99@172.87.18.1) (Remote host closed the connection)
2025-05-12 22:33:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-05-12 22:31:48 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-05-12 22:29:36 +0200euleritian(~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
2025-05-12 22:29:19 +0200euleritian(~euleritia@dynamic-176-006-133-103.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2025-05-12 22:28:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-05-12 22:24:41 +0200natto17(~natto@129.154.243.159) natto
2025-05-12 22:24:19 +0200rvalue-rvalue
2025-05-12 22:19:45 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 260 seconds)
2025-05-12 22:19:32 +0200rvalue-(~rvalue@user/rvalue) rvalue
2025-05-12 22:19:06 +0200JeremyB99(~JeremyB99@172.87.18.1)
2025-05-12 22:18:52 +0200JeremyB99(~JeremyB99@172.87.18.1) (Remote host closed the connection)
2025-05-12 22:17:53 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)