<d_bot>
<EduardoRFS> I'm trying to combine explicits and FCM
<d_bot>
<darrenldl> astronavt: more digression - pendulum seems consistent with crystal stdlib's behaviour, for the better or worse. go has (similarly) undefined behaviour, but it's explicit in the documentation (so uh technically better i guess)
<companion_cube>
what's `[@id T]` ?
zebrag has quit [Quit: Konversation terminated!]
zebrag has joined #ocaml
<d_bot>
<EduardoRFS> my way of saying `module T: T`
<d_bot>
<EduardoRFS> there is no syntax so I made a ppx
<d_bot>
<octachron> This is just not FCM? Internal types are not existentially quantified.
<d_bot>
<EduardoRFS> let me make an example, I have this partially implemented
vicfred has joined #ocaml
<d_bot>
<octachron> Let me correct, there is no first class modules in your example.
<d_bot>
<EduardoRFS> yup still works
<d_bot>
<EduardoRFS> line 18 isn't an example of it? I can easily make `(module Option: Monad)` of course that will lead to type would escape it's scope
<d_bot>
<froyo> my internet is slow rn and pics take forever to load ;_;
<d_bot>
<EduardoRFS> mb will put into a gist
<d_bot>
<froyo> I love type theory stuff this isnt fair
<d_bot>
<froyo> oo thanks
<d_bot>
<octachron> Still no first class modules in sight?
<d_bot>
<octachron> There was a packed value `x:t` in my example. The point is that the type of `x` should be unknown and impossible to obtain with a first class module.
<d_bot>
<EduardoRFS> but that is not the only case if t is abstract? It's still a packed module even when t is not abstract
<d_bot>
<EduardoRFS> like if you do `Show with type t = 't` on a function
<d_bot>
<octachron> But that is the point: the `with type t = 't` is a partial bridge between the total opaqueness of first class modules and the total transparence of modular explicits.
<d_bot>
<octachron> And if I am not mistaken, none of your examples show a completely opaque case where the types inside the modules are abstract and runtime defined.
<d_bot>
<EduardoRFS> I think that's my goal, is to expand this bridge then. But really interesting, your view of FCM is completely different from mine, to me FCM is just to pack module types, if the module type is opaque or not that's up to the user
<d_bot>
<EduardoRFS> when you do `with type t = 't` you're just creating a non opaque module type
<d_bot>
<EduardoRFS> btw I'm not trying to discuss, I'm really interested in understanding the advantage of explicits vs expanding type substitution like this
<d_bot>
<EduardoRFS> especially because of line 21, which explicits cannot do
<d_bot>
<octachron> I would be cautious about extending inference. It sounds like a good way to introduce unsoundness.
rom1504 has joined #ocaml
mxns has quit [Ping timeout: 260 seconds]
<astronavt>
@darrenldl im tempted to file an issue on the pendulum repo and see what the devs say
<d_bot>
<EduardoRFS> hmm I don't think the inference is changed, to implement the basics of it I didn't even touch on the unification of stuff, I just played around with type expected
<d_bot>
<EduardoRFS> and for higher order functions like poly, you need to explicitly define it, like with explicits, so it means OCaml cannot infer the most general case, but that's already true
mxns has joined #ocaml
<d_bot>
<EduardoRFS> will try to bother lpw25 and trefis with this \o\
<d_bot>
<darrenldl> astronavt: i'd be curious. let me check their issue page to see if anyone has said anything on that... but in any case im not faulting any devs from any of the libs too much, since, well, time handling is a really messy and boring work
zebrag has quit [Quit: Konversation terminated!]
zebrag has joined #ocaml
kini has quit [Remote host closed the connection]
kini has joined #ocaml
curtosis has joined #ocaml
mxns has quit [Ping timeout: 250 seconds]
curtosis has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
mxns has joined #ocaml
mxns has quit [Ping timeout: 258 seconds]
mxns has joined #ocaml
olle has joined #ocaml
mxns has quit [Ping timeout: 258 seconds]
mxns has joined #ocaml
zebrag has quit [Quit: Konversation terminated!]
zebrag has joined #ocaml
nicoo has quit [Ping timeout: 240 seconds]
nicoo has joined #ocaml
KeyJoo has quit [Ping timeout: 268 seconds]
curtosis has joined #ocaml
narimiran has quit [Ping timeout: 246 seconds]
olle has quit [Ping timeout: 240 seconds]
zebrag has quit [Quit: Konversation terminated!]
zebrag has joined #ocaml
tristanC_ is now known as tristanC
kini has quit [Remote host closed the connection]
kini has joined #ocaml
zebrag has quit [Quit: Konversation terminated!]
zebrag has joined #ocaml
curtosis is now known as curtosis[away]
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]