Newest at the top
| 2026-03-31 10:28:22 +0200 | jreicher | (~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 +0200 | chele | (~chele@user/chele) chele |
| 2026-03-31 10:12:54 +0200 | mistivia | (~mistivia@user/mistivia) (Ping timeout: 256 seconds) |
| 2026-03-31 10:12:18 +0200 | mistiv1a | (~mistivia@user/mistivia) (Remote host closed the connection) |
| 2026-03-31 10:10:11 +0200 | merijn | (~merijn@77.242.116.146) merijn |
| 2026-03-31 10:10:06 +0200 | mistiv1a | (~mistivia@user/mistivia) mistivia |
| 2026-03-31 10:09:03 +0200 | emmanuelux | (~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 +0200 | mistivia | (~mistivia@user/mistivia) mistivia |
| 2026-03-31 10:06:57 +0200 | <gentauro> | tomsmeding: got it |
| 2026-03-31 10:06:48 +0200 | mistivia | (~mistivia@user/mistivia) (Remote host closed the connection) |
| 2026-03-31 10:01:27 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e700e586cf86a3ab51f9bf20.dip0.t-ipconnect.de) acidjnk |
| 2026-03-31 09:57:50 +0200 | marinelli | (~weechat@gateway/tor-sasl/marinelli) marinelli |
| 2026-03-31 09:57:31 +0200 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection) |
| 2026-03-31 09:55:34 +0200 | oskarw | (~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 +0200 | xff0x | (~xff0x@175.177.157.211) (Ping timeout: 256 seconds) |
| 2026-03-31 09:51:41 +0200 | tomsmeding_ | 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 +0200 | puke | (~puke@user/puke) (Ping timeout: 264 seconds) |
| 2026-03-31 09:47:53 +0200 | mistivia | (~mistivia@user/mistivia) mistivia |
| 2026-03-31 09:47:38 +0200 | qqq | (~qqq@185.54.20.216) |
| 2026-03-31 09:46:15 +0200 | xff0x | (~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 +0200 | qqq | (~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 +0200 | danza | (~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 +0200 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-03-31 09:13:15 +0200 | qqq | (~qqq@185.54.20.216) |
| 2026-03-31 09:12:41 +0200 | lxsameer | (~lxsameer@Serene/lxsameer) (Ping timeout: 265 seconds) |
| 2026-03-31 09:11:55 +0200 | foul_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 +0200 | Angelz | (Angelz@user/angelz) angelz |