2026/03/31

Newest at the top

2026-03-31 10:28:22 +0200jreicher(~joelr@user/jreicher) jreicher
2026-03-31 10:26:16 +0200 <tomsmeding> gentauro: other-modules in general are hidden to consumers, not just those named `Internal`
2026-03-31 10:22:47 +0200chele(~chele@user/chele) chele
2026-03-31 10:12:54 +0200mistivia(~mistivia@user/mistivia) (Ping timeout: 256 seconds)
2026-03-31 10:12:18 +0200mistiv1a(~mistivia@user/mistivia) (Remote host closed the connection)
2026-03-31 10:10:11 +0200merijn(~merijn@77.242.116.146) merijn
2026-03-31 10:10:06 +0200mistiv1a(~mistivia@user/mistivia) mistivia
2026-03-31 10:09:03 +0200emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-03-31 10:08:44 +0200 <gentauro> sclv: nice
2026-03-31 10:08:34 +0200 <sclv> no
2026-03-31 10:08:12 +0200 <gentauro> tomsmeding: if you place `Internal` modules in `other-modules:` (cabal file) for your lib, can they be reached by consumers?
2026-03-31 10:07:02 +0200mistivia(~mistivia@user/mistivia) mistivia
2026-03-31 10:06:57 +0200 <gentauro> tomsmeding: got it
2026-03-31 10:06:48 +0200mistivia(~mistivia@user/mistivia) (Remote host closed the connection)
2026-03-31 10:01:27 +0200acidjnk_new3(~acidjnk@p200300d6e700e586cf86a3ab51f9bf20.dip0.t-ipconnect.de) acidjnk
2026-03-31 09:57:50 +0200marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-03-31 09:57:31 +0200marinelli(~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection)
2026-03-31 09:55:34 +0200oskarw(~user@user/oskarw) oskarw
2026-03-31 09:55:31 +0200 <tomsmeding> backpack signatures are rare because use of backpack in general is rare; hs-boot files are rare because generally people try to avoid module cycles
2026-03-31 09:54:43 +0200 <tomsmeding> gentauro: no, there's no .mli; but for curiosity, there are two kinds of files that both kind of look like an .mli: backpack signatures (https://cabal.readthedocs.io/en/stable/how-to-use-backpack.html) and hs-boot files (https://downloads.haskell.org/ghc/latest/docs/users_guide/separate_compilation.html#mutually-recur…)
2026-03-31 09:51:56 +0200xff0x(~xff0x@175.177.157.211) (Ping timeout: 256 seconds)
2026-03-31 09:51:41 +0200tomsmeding_tomsmeding
2026-03-31 09:51:10 +0200 <gentauro> mauke: do you know if Haskell has the .ml/.mli like OCaml? Where you can separate definition from implementation? I kind of like that separation tbh
2026-03-31 09:49:31 +0200puke(~puke@user/puke) (Ping timeout: 264 seconds)
2026-03-31 09:47:53 +0200mistivia(~mistivia@user/mistivia) mistivia
2026-03-31 09:47:38 +0200qqq(~qqq@185.54.20.216)
2026-03-31 09:46:15 +0200xff0x(~xff0x@175.177.157.211)
2026-03-31 09:42:56 +0200 <gentauro> mauke: now that I didn't know :o
2026-03-31 09:37:53 +0200 <mauke> as in "this is an interface specification, not actual .hs source code"
2026-03-31 09:37:13 +0200 <mauke> gentauro: related: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/separate_compilation.html#index-19:~:text=it%20…
2026-03-31 09:34:38 +0200 <gentauro> Leary: thx
2026-03-31 09:34:38 +0200qqq(~qqq@185.54.20.216) (Ping timeout: 252 seconds)
2026-03-31 09:34:19 +0200 <gentauro> while their `opaque` type doesn't. So you will never be able to instantiate it
2026-03-31 09:34:19 +0200 <mauke> the point is, it's an abstract type as far as users of the library are concerned
2026-03-31 09:33:53 +0200 <mauke> well, duh
2026-03-31 09:33:44 +0200 <gentauro> `IO` still has something on the right side …
2026-03-31 09:33:33 +0200 <Leary> The actual data declaration might look like, e.g. `data Transact a = Pure a | Record Transaction (Transact a) | Emit Event (Transact a)`.
2026-03-31 09:33:25 +0200 <gentauro> mauke: -> https://wiki.haskell.org/IO_inside#The_GHC_implementation
2026-03-31 09:32:41 +0200 <Leary> gentauro: 'Opaque' just means the constructors are hidden. `record` and `emit` (provided in their place) are written with access to those constructors.
2026-03-31 09:30:22 +0200danza(~danza@user/danza) danza
2026-03-31 09:27:41 +0200 <mauke> you can't look "inside"
2026-03-31 09:27:37 +0200 <mauke> Transact is like IO
2026-03-31 09:15:57 +0200 <gentauro> nah, I don't get it xD
2026-03-31 09:14:50 +0200merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-03-31 09:13:15 +0200qqq(~qqq@185.54.20.216)
2026-03-31 09:12:41 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 265 seconds)
2026-03-31 09:11:55 +0200foul_owl(~kerry@94.156.149.94) foul_owl
2026-03-31 09:10:20 +0200 <gentauro> oh, I see to get it. Nevermind :)
2026-03-31 09:09:18 +0200 <gentauro> CTRL + F -> "data Transact a -- opaque; cannot be run directly" how does this work with `record :: Transaction -> Transact ()`? Can you even instantiate an `opaque` type? Or do you just use `undefined`?
2026-03-31 09:08:34 +0200Angelz(Angelz@user/angelz) angelz