Inline has quit [Remote host closed the connection]
Inline has joined #ocaml
gzar has quit [Quit: WeeChat 4.3.2]
myrkraverk has quit [Read error: Connection reset by peer]
myrkraverk has joined #ocaml
torretto has quit [Remote host closed the connection]
torretto has joined #ocaml
hannes has quit [Ping timeout: 264 seconds]
hannes_ has joined #ocaml
jabuxas has quit [Ping timeout: 256 seconds]
torretto has quit [Remote host closed the connection]
torretto has joined #ocaml
mbuf has joined #ocaml
hannes_ is now known as hannes
Serpent7776 has joined #ocaml
bartholin has joined #ocaml
Inline has quit [Remote host closed the connection]
Inline has joined #ocaml
hannes has quit [Ping timeout: 268 seconds]
cr1901_ has joined #ocaml
cr1901 has quit [Ping timeout: 268 seconds]
jabuxas has joined #ocaml
toastal has joined #ocaml
hannes has joined #ocaml
jabuxas has quit [Ping timeout: 268 seconds]
<discocaml_>
<deepspacejohn> The documentation for -rectypes says this "By default, only recursive types where the recursion goes through an object type are supported." https://ocaml.org/manual/5.2/comp.html
<discocaml_>
<deepspacejohn> This an error or does "object type" mean something different than the type of OCaml objects?
<discocaml_>
<deepspacejohn> *is this
<discocaml_>
<octachron> I am not sure that I follow? An object type is a kind of type, like a tuple type or an arrow type.
<discocaml_>
<octachron> For instance, in `val x : < m:int > ` the type of `x` is an object type.
<companion_cube>
Shouldn't the doc of rectypes say "this is for esoteric purposes, do not use"? 🤣
trillion_exabyte has quit [Ping timeout: 252 seconds]
trillion_exabyte has joined #ocaml
<discocaml_>
<deepspacejohn> `type 'a t = Cons of 'a * 'a t` is recursive and does not go through an object type.
<discocaml_>
<deepspacejohn> so " only recursive types where the recursion goes through an object type are supported" seems incorrect?
<discocaml_>
<._null._> This is equirecursivity, the well-behaved variant. `-rectypes` enables isorecursivity (`< x: 'a> as 'a` for object types)
<discocaml_>
<._null._> I mixed up the two terms, isorecursivity is the always enabled well behaved one
<discocaml_>
<octachron> The type definition in your example is recursive, the type expression itself is not recursive.
<discocaml_>
<octachron> Basically, the definition gives you way to construct or destruct values of type `'a t` that involves `'a t` itself, but it is not stating that parts of the type is equal to the whole type.
<discocaml_>
<deepspacejohn> interesting, that makes more sense now. I hadn't considered the differences between expressions and definitions for that
Inline has quit [Quit: Leaving]
gzar has joined #ocaml
Inline has joined #ocaml
cr1901_ is now known as cr1901
oriba has joined #ocaml
<theblatte>
seems like opam 2.0 doesn't let you install dependencies of a lock file, eg "opam install --locked --deps-only opam/utop.opam.locked" wants to install packages at the wrong versions
<theblatte>
also is there a way to tell opam not to perform other actions than the one I asked? "opam remove utop" wants to recompile a bunch of stuff due to upstream changes in addition to removing utop
<rustyne>
(I’m not sure rebuilding counts as changing)
<theblatte>
rustyne: nope
<theblatte>
actually some of these packages use utop some it's ok that they are recompiled, my bad
SquidDev has quit [Quit: Bye!]
SquidDev has joined #ocaml
Inline has quit [Remote host closed the connection]
Inline has joined #ocaml
jabuxas has joined #ocaml
waleee has joined #ocaml
Tuplanolla has joined #ocaml
<discocaml_>
<deepspacejohn> @._null._ is there any documentation/literature about the different kinds of recursion? "isorecursive" has 0 results on google
mbuf has quit [Quit: Leaving]
<discocaml_>
<deepspacejohn> actually never mind, it has results but I searched "isorecursivity" first which had 0.
<discocaml_>
<andreypopp> TAPL discusses this
<discocaml_>
<deepspacejohn> cool, thanks for the pointer