2025/01/31

2025-01-31 00:04:43 +0100weary-traveler(~user@user/user363627) user363627
2025-01-31 00:06:53 +0100 <glguy> My favorite Data. misuse is Data.Kind
2025-01-31 00:07:03 +0100 <tomsmeding> (re mechanisms to resolve ambiguity: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/package_qualified_imports.html#exte… )
2025-01-31 00:09:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-01-31 00:10:58 +0100 <dminuoso> Relatedly https://downloads.haskell.org/ghc/latest/docs/users_guide/packages.html#package-thinning-and-renam…
2025-01-31 00:11:36 +0100 <dminuoso> Unsure how controllable that is via cabal-install
2025-01-31 00:12:28 +0100 <geekosaur> "mixins" should handle both
2025-01-31 00:12:53 +0100eL_Bart0(eL_Bart0@dietunichtguten.org) (Ping timeout: 245 seconds)
2025-01-31 00:13:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-01-31 00:14:40 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-01-31 00:14:57 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2025-01-31 00:18:50 +0100 <dminuoso> A while ago transformers has received these nice diagrams to visualize what the respective transformers do: https://hackage.haskell.org/package/transformers-0.6.1.2/docs/Control-Monad-Trans-Writer-CPS.html
2025-01-31 00:19:06 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-01-31 00:19:09 +0100 <dminuoso> We're just missing a diagram for Cont. Cant be that hard, right? :-)
2025-01-31 00:19:28 +0100 <geekosaur> i,i "Cont be that hard"
2025-01-31 00:19:37 +0100 <dminuoso> Heh.
2025-01-31 00:21:02 +0100 <EvanR> haskell is famous for laissez faire programming. Terrible I'm outta here
2025-01-31 00:21:02 +0100 <int-e> please pass all the details to `const "I don't want to hear it."`
2025-01-31 00:21:15 +0100 <EvanR> looking for a language for more bondage and discipline
2025-01-31 00:22:30 +0100 <geekosaur> surely there's an appropriate DT language
2025-01-31 00:23:03 +0100rstromlund(~user@user/rstromlund) (Ping timeout: 252 seconds)
2025-01-31 00:24:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-01-31 00:28:15 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2025-01-31 00:31:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-01-31 00:31:59 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
2025-01-31 00:32:46 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2025-01-31 00:32:46 +0100ChanServ+v haskellbridge
2025-01-31 00:35:39 +0100 <monochrom> You know what, I have to understand Reader and Writer first before I understand those two diagrams.
2025-01-31 00:35:57 +0100xff0x(~xff0x@ai096095.d.east.v6connect.net) (Ping timeout: 252 seconds)
2025-01-31 00:36:07 +0100 <monochrom> And generally I have to understand bind first.
2025-01-31 00:37:39 +0100 <monochrom> But State is missing a diagram and that's a well-known diagram.
2025-01-31 00:38:06 +0100xff0x(~xff0x@2405:6580:b080:900:704:c9bd:a645:9b1d)
2025-01-31 00:38:22 +0100 <monochrom> Conjecture: Such a diagram exists iff the monad is of an algebraic effect. Cont is not an algebraic effect.
2025-01-31 00:42:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-01-31 00:42:51 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 252 seconds)
2025-01-31 00:44:14 +0100joeyadams(~joeyadams@syn-184-054-105-097.res.spectrum.com)
2025-01-31 00:46:35 +0100monochrom(trebla@216.138.220.146) (Ping timeout: 252 seconds)
2025-01-31 00:47:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-01-31 00:49:59 +0100monochrom(trebla@216.138.220.146)
2025-01-31 00:52:02 +0100 <euouae> <https://en.wikibooks.org/wiki/Haskell/Understanding_monads/State> "A monad is sometimes described as providing a value in a context." -- this is very close to what I was thinking when I said monads are like state machines
2025-01-31 00:54:15 +0100 <dminuoso> euouae: Monads are an abstract interface.
2025-01-31 00:54:36 +0100 <dminuoso> Comparing them to anything concrete is, at best, just likening it to that specific instance, but that prevents you from seeing what monad is about.
2025-01-31 00:54:52 +0100 <int-e> now I want a burrito
2025-01-31 00:55:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-01-31 00:57:25 +0100 <dminuoso> euouae: My best recommendation is to just not worry about what Monad means at all. `IO` is about side effects. `[]` is about lists. `Maybe` is about failure. `Either A` is about exceptions. Each example is trivial to explain to any beginner
2025-01-31 00:58:09 +0100 <dminuoso> Monad is just observing that all of these things have some pattern and laws in common. There's not really any inherent meaning to it
2025-01-31 00:58:40 +0100 <dminuoso> And if people stop trying to attach meaning to that word `Monad`, they get on learning Haskell much faster.
2025-01-31 00:58:45 +0100 <monochrom> I do not mind specific instances that may limit one's imagination because it is part of the learning process.
2025-01-31 00:59:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-01-31 01:00:31 +0100rstromlund(~user@user/rstromlund) rstromlund
2025-01-31 01:00:41 +0100 <monochrom> Consider how "numbers" are taught beginning with natural numbers and, eventually, if you go to math grad school, ending with algebraic number fields. Not the other way round.
2025-01-31 01:01:00 +0100 <dminuoso> monochrom: Sure, but that particular wikibooks article is not about promoting any learning process.
2025-01-31 01:01:22 +0100 <dminuoso> If Monad tutorials started with just proclamining `Monads are just IO`, this would be a feasible strategy.
2025-01-31 01:01:44 +0100 <dminuoso> As you could gradually introduce more instances and different "flavours"