2025/12/20

Newest at the top

2025-12-20 19:08:26 +0100Jackneill(~Jackneill@178-164-234-79.pool.digikabel.hu)
2025-12-20 19:07:43 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 240 seconds)
2025-12-20 19:06:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2025-12-20 19:05:40 +0100 <haskellbridge> <Morj> Another think typeclasses allow you vs modules is delaying a choice between runtime or compile time polymorphism. Like in haskell you can specialize-pragma or you can use dynamically
2025-12-20 19:04:51 +0100 <haskellbridge> <Morj> For the purpose of this excercise I rule it out. But in general I don't think it's unacceptable
2025-12-20 19:03:44 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-12-20 19:03:28 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Remote host closed the connection)
2025-12-20 19:02:14 +0100 <monochrom> Yeah GND is benovolent magic :)
2025-12-20 19:01:26 +0100 <monochrom> But ocaml has m4 so it's "OK". >:)
2025-12-20 19:00:44 +0100fp(~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 256 seconds)
2025-12-20 19:00:27 +0100 <tomsmeding> yin geekosaur: re ghcup's bootstrap script, I made a PR https://github.com/haskell/ghcup-hs/pull/1301
2025-12-20 19:00:16 +0100 <monochrom> But I can understand if you desire automation.
2025-12-20 18:59:51 +0100 <monochrom> Do you rule out hand-written forwarding? Because in SML I can write "module MyHashMap sig Map where insert = wrap . insert . unwrap; etc".
2025-12-20 18:57:39 +0100 <haskellbridge> <Morj> GeneralizedNewtypeDeriving is magic that replaces macros, but it's very useful magic
2025-12-20 18:57:24 +0100 <haskellbridge> <Morj> Rust requires macros for a similar thing for examples
2025-12-20 18:57:10 +0100 <haskellbridge> <Morj> Given a module Data.HashMap sig Map, and I want to write a module MyHashMap that newtype-wraps the old one, like hоloleap is saying. To make MyHashMap implement Map, I don't think sml or ocaml have any solutions
2025-12-20 18:55:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-12-20 18:55:51 +0100Googulator28(~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu)
2025-12-20 18:55:51 +0100itaipu(~itaipu@168.121.97.28) itaipu
2025-12-20 18:55:48 +0100 <monochrom> But I can be talked into classes if it comes with associated data families or type families. :)
2025-12-20 18:55:44 +0100Googulator28(~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed)
2025-12-20 18:55:05 +0100itaipu(~itaipu@168.121.97.28) (Ping timeout: 256 seconds)
2025-12-20 18:52:59 +0100 <monochrom> IMO ideally it is SML parametrizable modules, equivalently Haskell Backpack, not classes, that is the right mechanism for this kind of abstraction. Unfortunately, Backpack arrived too late, long after people had discovered and widely use the low-tech method. (Cf bytesting and text.)
2025-12-20 18:51:26 +0100 <haskellbridge> <Morj> Harder to derive a module from existing module though
2025-12-20 18:51:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2025-12-20 18:51:07 +0100 <int-e> The `as Foo` renaming feature is really helpful for that
2025-12-20 18:50:17 +0100 <monochrom> It turns out that the extremely low tech way of "just change 'import qualified Data.X" to 'import qualified Data.Y'" is sufficient for abstraction and hot-swapping.
2025-12-20 18:49:08 +0100 <monochrom> But it didn't take off. Nobody or too few people used it.
2025-12-20 18:48:51 +0100 <monochrom> Look for "edison".
2025-12-20 18:47:50 +0100 <monochrom> Okasaki used to have defined classes for that.
2025-12-20 18:47:34 +0100 <hololeap> but, yeah that looks about right
2025-12-20 18:46:47 +0100Pozyomka(~pyon@user/pyon) (Quit: WeeChat 4.8.1)
2025-12-20 18:46:20 +0100 <hololeap> mostly, I'd like to wrap maps in a newtype and be able to use generalized newtype deriving to get that stuff for free
2025-12-20 18:45:54 +0100Lycurgus(~juan@user/Lycurgus) Lycurgus
2025-12-20 18:45:00 +0100 <haskellbridge> <Morj> Also there are lenses
2025-12-20 18:44:56 +0100 <haskellbridge> <Morj> There is https://hackage.haskell.org/package/mono-traversable-1.0.21.0/docs/Data-Containers.html#t:IsMap
2025-12-20 18:43:53 +0100 <hololeap> is there a typeclass that abstracts over maps, namely things like insert, lookup, union, singleton etc?
2025-12-20 18:43:05 +0100fp(~Thunderbi@2001:708:20:1406::1370) fp
2025-12-20 18:42:44 +0100fp(~Thunderbi@130.233.70.102) (Client Quit)
2025-12-20 18:41:03 +0100fp(~Thunderbi@130.233.70.102) fp
2025-12-20 18:40:39 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-12-20 18:36:02 +0100deptype(~deptype@2406:b400:3a:2dd5:aace:ec7b:7bb3:d2d8) (Remote host closed the connection)
2025-12-20 18:35:26 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2025-12-20 18:24:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-12-20 18:19:59 +0100 <Franciman> I was thinking about arrows, because yampa uses them to define FRP networks
2025-12-20 18:19:42 +0100 <Franciman> for the pointer, monochrom
2025-12-20 18:19:37 +0100 <Franciman> thanks
2025-12-20 18:16:29 +0100 <monochrom> (Then the HXT library (for XML) adds <|> to Arrow so you get Alternative+Arrow)
2025-12-20 18:16:23 +0100 <Franciman> each pure function is an arrow
2025-12-20 18:16:14 +0100 <Franciman> true, Arrows are a strange beast