Newest at the top
| 2025-12-20 19:08:26 +0100 | Jackneill | (~Jackneill@178-164-234-79.pool.digikabel.hu) |
| 2025-12-20 19:07:43 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 240 seconds) |
| 2025-12-20 19:06:59 +0100 | merijn | (~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 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2025-12-20 19:03:28 +0100 | chromoblob | (~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 +0100 | fp | (~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 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-12-20 18:55:51 +0100 | Googulator28 | (~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 2025-12-20 18:55:51 +0100 | itaipu | (~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 +0100 | Googulator28 | (~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-12-20 18:55:05 +0100 | itaipu | (~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 +0100 | merijn | (~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 +0100 | Pozyomka | (~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 +0100 | Lycurgus | (~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 +0100 | fp | (~Thunderbi@2001:708:20:1406::1370) fp |
| 2025-12-20 18:42:44 +0100 | fp | (~Thunderbi@130.233.70.102) (Client Quit) |
| 2025-12-20 18:41:03 +0100 | fp | (~Thunderbi@130.233.70.102) fp |
| 2025-12-20 18:40:39 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-12-20 18:36:02 +0100 | deptype | (~deptype@2406:b400:3a:2dd5:aace:ec7b:7bb3:d2d8) (Remote host closed the connection) |
| 2025-12-20 18:35:26 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2025-12-20 18:24:01 +0100 | merijn | (~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 |