Leonidas changed the topic of #ocaml to: Discussion about the OCaml programming language | http://www.ocaml.org | OCaml 4.13.0 released: https://ocaml.org/releases/4.13.0.html | Try OCaml in your browser: https://try.ocamlpro.com | Public channel logs at https://libera.irclog.whitequark.org/ocaml/
Tuplanolla has quit [Quit: Leaving.]
perrierjouet has quit [Quit: WeeChat 3.4.1]
perrierjouet has joined #ocaml
oriba has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
perrierjouet has quit [Quit: WeeChat 3.4.1]
perrierjouet has joined #ocaml
kaph has quit [Read error: Connection reset by peer]
Everything has quit [Quit: leaving]
Haudegen has quit [Ping timeout: 240 seconds]
kaph has joined #ocaml
gravicappa has joined #ocaml
waleee has quit [Ping timeout: 240 seconds]
<d_bot> <Bluddy> #editor-support should really be under Ecosystem. FYI I'll be moving it soon.
zebrag has quit [Quit: Konversation terminated!]
chrisz has quit [Ping timeout: 256 seconds]
chrisz has joined #ocaml
bobo has joined #ocaml
spip has quit [Ping timeout: 256 seconds]
mro has joined #ocaml
mro has quit [Ping timeout: 240 seconds]
Serpent7776 has joined #ocaml
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
Tuplanolla has joined #ocaml
Haudegen has joined #ocaml
namkeleser has joined #ocaml
<d_bot> <andreypopp> yeah... looks like this isn't possible ā€” caml_startup is only called for the first .so loaded. Wondering if ocaml 5 allows that
xd1le has joined #ocaml
bartholin has joined #ocaml
mro has quit [Remote host closed the connection]
troydm has quit [Ping timeout: 256 seconds]
mro has joined #ocaml
namkeleser has quit [Quit: Client closed]
bobo has quit [Quit: Konversation terminated!]
mro has quit [Quit: Leaving...]
bartholin has quit [Read error: Connection reset by peer]
<d_bot> <Continuation Calculus> for testing purposes, I'm trying to concretize a virtual library's signature, and I can't even get define the type signature I want. `module type TYPE = module type of My_virtual_library with My_param.t = int` doesn't work (type declarations do not match,)
<d_bot> <Continuation Calculus> It looks like as if `My_param.t` already was concrete, but at the same time, I can't find what its concrete type is
bartholin has joined #ocaml
<d_bot> <Continuation Calculus> Something that might help, how can I ask OCaml what all the constraints it has on a type are?
<d_bot> <Continuation Calculus> Or even better, given this is only for testing purposes, and not the actual live code, is there an `Obj.magic` at the module type substitution level, where I can be like "no worries, they really are the same type, let me perform the substitution"? I know how to create fake type equality witnesses through GADT and Obj.magic, but not sure how to use this to actually perform the `with type =` that I want
<d_bot> <octachron> `with` constraints are nearly textual transformation. You cannot have `Obj.magic` at the module level, because it would potentially break the typing of your programs rather than its execution.
<d_bot> <Continuation Calculus> > because it would potentially break the typing of your program
<d_bot> <octachron> I would suggest to just check the inferred type of `module type of My_virtual_library` (with `cmi2mli` for instance)
<d_bot> <octachron> Not really, you can create proofs of false, but your theorems are still well-written theorems (that states non-sensical results).
<d_bot> <octachron> Or in other words, the typechecker implementation is not written defensively against non-valid module types (or types) and expects well-formed ASTs.
namkeleser has joined #ocaml
<d_bot> <octachron> (And to explain the restriction on the `with` constraint, the issue would be with things like https://gist.github.com/Octachron/ce055a497cc8f1cdf03f8c252487599c that try to replace an injective type constructor with a non-injective one in a signature that relied on the injectivity of the original type constructor)
<d_bot> <Continuation Calculus> I see, thanks
gravicappa has quit [Ping timeout: 250 seconds]
<d_bot> <Continuation Calculus> .cmis are only built for libs, not bins? šŸ˜¦
<d_bot> <octachron> Ah, cmi are built for everything except potentially the main module of an executable.
<d_bot> <Continuation Calculus> I see
<d_bot> <Continuation Calculus> I've built a dummy library, but only get a .a and a .cmxa
<d_bot> <octachron> The `cmi`s must be elsewhere, you cannot use library (or any compilation unit really) without `cmi`s
<d_bot> <Continuation Calculus> well, it's not in `$cur__target_dir/default/..path../`
<d_bot> <Continuation Calculus> I'll check out later
<d_bot> <Continuation Calculus> thanks tho, didn't know about cmitomli, epic tool
troydm has joined #ocaml
gravicappa has joined #ocaml
namkeleser has quit [Quit: Client closed]
bartholin has quit [Ping timeout: 250 seconds]
bartholin has joined #ocaml
rond_ has joined #ocaml
jlrnick has joined #ocaml
Tuplanolla1 has joined #ocaml
farn_ has joined #ocaml
Tuplanolla has quit [Ping timeout: 240 seconds]
farn has quit [Ping timeout: 240 seconds]
epony has quit [Ping timeout: 240 seconds]
bartholin has quit [Ping timeout: 256 seconds]
epony has joined #ocaml
rond_ has quit [Quit: Client closed]
epony has quit [Excess Flood]
omni has quit [Read error: Connection reset by peer]
omni has joined #ocaml
kaph has quit [Read error: Connection reset by peer]
kaph has joined #ocaml
bartholin has joined #ocaml
Fardale1 has joined #ocaml
kurfen has quit [Ping timeout: 250 seconds]
Fardale has quit [Ping timeout: 250 seconds]
kurfen has joined #ocaml
drewolson0 has joined #ocaml
sparogy has quit [Ping timeout: 250 seconds]
drewolson has quit [Ping timeout: 250 seconds]
drewolson0 is now known as drewolson
ns128 has joined #ocaml
ansiwen_ has joined #ocaml
riverdc_ has joined #ocaml
SoniEx2 has joined #ocaml
ansiwen has quit [Ping timeout: 250 seconds]
Soni has quit [Remote host closed the connection]
riverdc has quit [Ping timeout: 250 seconds]
ns12 has quit [Ping timeout: 250 seconds]
ns128 is now known as ns12
sparogy has joined #ocaml
<sleepydog> the Fmt package is so good. I am constantly surprised by how succinctly I can define a pretty-printer for complex structures with this library.
oriba has joined #ocaml
bartholin has quit [Ping timeout: 240 seconds]
gdd has joined #ocaml
xd1le has quit [Quit: xd1le]
spip has joined #ocaml
gravicappa has quit [Ping timeout: 240 seconds]
dextaa_ has joined #ocaml
epony has joined #ocaml
waleee has joined #ocaml
gravicappa has joined #ocaml
ornxka has quit [Quit: WeeChat 3.4]
bartholin has joined #ocaml
Nahra has joined #ocaml
pieguy128 has quit [Quit: ZNC 1.8.2 - https://znc.in]
pieguy128 has joined #ocaml
zebrag has joined #ocaml
cedric has joined #ocaml
xand0_ has quit []
xandkar has joined #ocaml
xandkar has quit [Client Quit]
xand0 has joined #ocaml
xand0 has quit [Client Quit]
farn_ is now known as farn
<companion_cube> @octachron on a scale of "nope" to "lolnope", how likely is it that `let@ f x = f x` could make it into Fun?
<companion_cube> after using it a bit, it's just amazing, and I can't really imagine go back to `foo @@ fun x ->\nā€¦`
<octachron> https://github.com/ocaml/ocaml/pull/9887 had mixed reactions for introducing `let@` in the compiler code base.
<octachron> I am not sure how those reactions translate to the stdlib context however
<companion_cube> forgot this issue, thank you for the link
<companion_cube> (although I did subscribe to it back then :D)
bartholin has quit [Ping timeout: 256 seconds]
bartholin has joined #ocaml
gravicappa has quit [Ping timeout: 252 seconds]
bartholin has quit [Ping timeout: 240 seconds]
bartholin has joined #ocaml
<d_bot> <glennsl> What's a "migration error" , as emitted by ocamlc?
<d_bot> <glennsl> More specifically `migration error: existentials in pattern-matching is not supported before OCaml 4.13`
<d_bot> <glennsl> I'm using 4.1.3.1
<d_bot> <glennsl> Oh, it's probably a PPX isn't it...
<d_bot> <EduardoRFS> yup
<d_bot> <EduardoRFS> I think ppxlib is on OCaml 4.12 AST
bartholin has quit [Quit: Leaving]
<d_bot> <glennsl> Hmm, this seems to suggest it supports 4.14 even: https://github.com/ocaml-ppx/ppxlib/blob/0.24.0/ast/supported_version/supported_version.ml
<d_bot> <glennsl> For the version of ppxlib I have installed
<sim642> But it currently migrates everything to 4.12 or something
<d_bot> <glennsl> Right, makes sense. I find it unreasonably hard to find that important piece of information though, but it's in the change log for 0.22, released a bit over a year ago: "Bump ppxlib's AST to 4.12 "
<d_bot> <glennsl> Looks like 4.14 AST is inbound very soon too: https://github.com/ocaml-ppx/ppxlib/pull/320
<d_bot> <glennsl> But might take a while for some PPXes to migrate as there's breaking changes
Tuplanolla1 is now known as Tuplanolla
rond_ has joined #ocaml
rond_ has quit [Quit: Client closed]
troydm has quit [Ping timeout: 240 seconds]
troydm has joined #ocaml
Haudegen has quit [Quit: No Ping reply in 180 seconds.]
Haudegen has joined #ocaml
jlrnick has quit [Remote host closed the connection]
wyrd has quit [Ping timeout: 240 seconds]
wyrd has joined #ocaml
sagax has joined #ocaml
favonia has joined #ocaml
favonia has quit [Client Quit]
sagax has quit [Ping timeout: 256 seconds]
Everything has joined #ocaml
<d_bot> <AZAH> ```ml
<d_bot> <AZAH> val concat_map : ('a -> 'b list) -> 'a list -> 'b list
<d_bot> <AZAH> ```
<d_bot> <AZAH> concat_map f l gives the same result as List.concat (List.map f l). Tail-recursive.
<d_bot> <AZAH>
<d_bot> <AZAH> ```ml
<d_bot> <AZAH> val concat : 'a list list -> 'a list
<d_bot> <AZAH> ```
<d_bot> <AZAH>
<d_bot> <AZAH> How can concat_map give the same result as concat (map) when it expects 'a list list
Tuplanolla has quit [Quit: Leaving.]
cedric has quit [Quit: Konversation terminated!]
<pgiarrusso> AZAH: since `f : 'a -> 'b list`, `map f xs: 'a list list` (for the right `xs`), and `concat` gets back to `'a list`.
<d_bot> <NULL> Are you answering the question from # beginners ?
andreypopp has quit [Ping timeout: 256 seconds]
Haudegen has quit [Ping timeout: 252 seconds]