companion_cube changed the topic of #ocaml to: Discussion about the OCaml programming language | http://www.ocaml.org | OCaml 4.12 released: https://ocaml.org/releases/4.12.0.html | Try OCaml in your browser: https://try.ocamlpro.com | Public channel logs at https://libera.irclog.whitequark.org/ocaml/
waleee has quit [Ping timeout: 252 seconds]
[itchyjunk] has quit [Quit: Leaving]
zebrag has quit [Quit: Konversation terminated!]
cross has quit [*.net *.split]
caasih has quit [*.net *.split]
saltrocklamp[m] has quit [*.net *.split]
nyuhu has quit [*.net *.split]
asm has quit [*.net *.split]
nyuhu has joined #ocaml
cross has joined #ocaml
asm has joined #ocaml
caasih has joined #ocaml
gravicappa has joined #ocaml
saltrocklamp[m] has joined #ocaml
xenu has quit [*.net *.split]
fluxm has quit [*.net *.split]
Tardigreat[m] has quit [*.net *.split]
ccx_ has quit [*.net *.split]
riverdc has quit [*.net *.split]
xenu has joined #ocaml
riverdc has joined #ocaml
ccx_ has joined #ocaml
fluxm has joined #ocaml
spip has quit [Ping timeout: 240 seconds]
spip has joined #ocaml
Tardigreat[m] has joined #ocaml
mbuf has joined #ocaml
shawnw has quit [Ping timeout: 260 seconds]
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
olle has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
Haudegen has joined #ocaml
rond_ has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mro_ has joined #ocaml
mro has quit [Ping timeout: 246 seconds]
andreypopp has quit [Read error: Connection reset by peer]
andreypopp has joined #ocaml
hendursa1 has joined #ocaml
hendursaga has quit [Ping timeout: 276 seconds]
<d_bot> <Bluddy> @EduardoRFS since effects are similar to exceptions they should be fairly efficient, I think. More efficient than monads at least.
olle has quit [Ping timeout: 264 seconds]
bartholin has joined #ocaml
glassofethanol has joined #ocaml
quernd has quit [Quit: The Lounge - https://thelounge.chat]
quernd has joined #ocaml
Everything has joined #ocaml
gravicappa has quit [Ping timeout: 246 seconds]
gravicappa has joined #ocaml
Haudegen has quit [Quit: Bin weg.]
mro_ has quit [Remote host closed the connection]
waleee has joined #ocaml
olle has joined #ocaml
kakadu has joined #ocaml
yoctocell has joined #ocaml
Haudegen has joined #ocaml
asm has quit [Changing host]
asm has joined #ocaml
[itchyjunk] has joined #ocaml
leah2 has quit [Remote host closed the connection]
leah2 has joined #ocaml
favonia has quit [Ping timeout: 260 seconds]
mbuf has quit [Quit: Leaving]
motherfsck has quit [Quit: quit]
motherfsck has joined #ocaml
mro has joined #ocaml
zebrag has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mro has quit [Ping timeout: 246 seconds]
mro has joined #ocaml
[itchyjunk] has quit [Quit: Leaving]
<Soni> so this thing follows symlinks https://bpa.st/24CA
<Soni> thankfully we do copy the symlinks to the output dir before running the processor on it https://soniex2.autistic.space/git-repos/htmlgdump.git/browse/refs/heads/deploy/tree/git-hooks/post-receive/ (sorry, this is python), so the worst this does is process the same file multiple times
<Soni> (which is indeed wasteful but it's a different issue)
<Soni> anyway, how would you go about changing the symlink behaviour of these? https://github.com/dmbaturin/soupault/blob/master/src/site_dir.ml
<Soni> (it'd be nice to have options for ignore, copy/replace and follow)
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #ocaml
olle has quit [Ping timeout: 264 seconds]
mro has quit [Remote host closed the connection]
favonia has joined #ocaml
leah2 has quit [Remote host closed the connection]
leah2 has joined #ocaml
<d_bot> <EduardoRFS> yes but as I'm using it for everything even monads are too slow, currently just passing a mutable variable around.
glassofethanol has quit [Quit: leaving]
gravicappa has quit [Ping timeout: 265 seconds]
Haudegen has quit [Quit: Bin weg.]
mro has joined #ocaml
mro has quit [Ping timeout: 246 seconds]
bartholin has quit [Quit: Leaving]
vb has quit [Ping timeout: 252 seconds]
vb has joined #ocaml
<Corbin> Hi! Redirecting from #erights (capability-theory discussion): does anybody know the status of http://wiki.erights.org/wiki/Emily ?
olle has joined #ocaml
<ccx_> Maybe related to the topic of safe, contained ML subsets: https://github.com/coord-e/mlml & https://github.com/maekawatoshiki/rcaml
Everything has left #ocaml [#ocaml]
<Corbin> Nice. Emily piqued my interest by being capability-aware, but anything along these lines is worth examining.
Haudegen has joined #ocaml
<ccx_> Capability support can be happy accident of being simple and pure enough, without necessarily being "aware"..
cedric has joined #ocaml
<Armael> indeed, CHERI is very cool :-)
<Corbin> Yeah, simply-typed lambda calculi are all capability-safe by default. The addition of features often ruins it.
Tuplanolla has joined #ocaml
gravicappa has joined #ocaml
<ccx_> I shouldn't forget to mention the taming of Pict, which is translation of pi-calculus into ML-like syntax and semantics: https://web.archive.org/web/20210529052139/http://www2.fiit.stuba.sk/~kosik/tamed-pict.html
<ccx_> It's as abandoned as it gets, but it might be simple enough to revive should anyone care.
<ccx_> (Or it's successor called P which has CPU and memory quotas for code)
rond_ has quit [Quit: Client closed]
waleee has quit [Quit: WeeChat 3.2.1]
hornhack has joined #ocaml
mro has joined #ocaml
hackinghorn has quit [Ping timeout: 268 seconds]
mro has quit [Client Quit]
<ccx_> Corbin: Unrelatedly, I think you might appreciate this if you're not yet familiar: https://github.com/xvw/preface
<Corbin> ccx_: It's nice enough, but I've moved beyond names and am building https://esolangs.org/wiki/Cammy
<Corbin> Preface certainly looks quite comprehensive.
favonia has quit [Ping timeout: 260 seconds]
waleee has joined #ocaml
motherfsck has quit [Quit: quit]
glassofethanol has joined #ocaml
motherfsck has joined #ocaml
motherfsck has quit [Remote host closed the connection]
glassofethanol has quit [Ping timeout: 264 seconds]
glassofethanol has joined #ocaml
glassofethanol has quit [Ping timeout: 264 seconds]
mro has joined #ocaml
favonia has joined #ocaml
gravicappa has quit [Ping timeout: 252 seconds]
mro has quit [Quit: Leaving...]
Haudegen has quit [Quit: Bin weg.]
Stumpfenstiel has joined #ocaml
glassofethanol has joined #ocaml
waleee has quit [Ping timeout: 246 seconds]
waleee has joined #ocaml
olle has quit [Ping timeout: 246 seconds]
glassofethanol has quit [Quit: leaving]
yoctocell has quit [Ping timeout: 246 seconds]
pmetzger has joined #ocaml
<d_bot> <RegularSpatula> Has anyone done much work with pyml for wrapping python libraries? I was looking at ocaml sklearn bindings and apparently they are generated automatically with this ~4000 line python script: https://github.com/lehy/ocaml-sklearn/blob/master/lib/skdoc.py. For anyone who has made ocaml bindings to python (or any other language), is it common to autogenerate the ocaml code like that?
<d_bot> <EduardoRFS> why does value restriction apply to the following function?
<d_bot> <EduardoRFS>
<d_bot> <EduardoRFS> ```ocaml
<d_bot> <EduardoRFS> let false_: 'a -> 'b -> 'b = assert false
<d_bot> <EduardoRFS> let v = false_ ()
<d_bot> <EduardoRFS> ```
<d_bot> <EduardoRFS>
<d_bot> <EduardoRFS> There is any possible unsoundness on it? Or is it just an accident of OCaml value restriction implementation?
<d_bot> <EduardoRFS> Also, will typed effects effectively "solve" the value restriction? As now we can track if a function is pure or not
motherfsck has joined #ocaml
<thizanne> that's no "accident", more like the very point of value restriction: `false_ ()` is not a value (and it's not covariant either), so its type can't be generalised
<thizanne> re. typed effects: typing algebraic effects won't solve this, as there's still an opportunity to introduce side effects without using algebraic effects at all
<d_bot> <EduardoRFS> Like? I was looking on Leo's talk, and it seems like you can only put all mutability with an effect of `[io]` which on his talk is an implicit effect of the arrow
<d_bot> <EduardoRFS> so a -> a actually means a -[io]> b, which seems to remove any opportunity for mutation
<d_bot> <EduardoRFS> the point of value restriction is to avoid unsoundness through mutability, sure, but there is any unsoundness possible on the type described being partially applied?
<d_bot> <EduardoRFS>
<d_bot> <EduardoRFS> If not, my argument is that it is an accident of value restriction, just another case of value restriction being too restrict
<thizanne> the name "value restriction" means "if you're syntactivally not a value, then you're not generalized"
<thizanne> indeed the goal is to avoid unsoundness, and indeed you could on the principle avoid the same unsoundness with a more relaxed criterion
<thizanne> (adding "covariant variables can still be generalised" is one of those relaxings)
pmetzger has quit []
<d_bot> <EduardoRFS> oh that's exactly what I wanted to search, thank you
<thizanne> and yes the type '_b -> '_b itself would be unsound to generalise a priori: `let f = let r = ref None in fun x -> (r := Some x; x)` has the same type, and applying it as `f (); f 42` would be unsound
<d_bot> <EduardoRFS> oh you're right, that's exactly the case I was looking
<Leonidas> It looks like `match ... with | exception Not_found -> Error ...` triggers a deprecation warning now :'(
sagax has quit [Ping timeout: 268 seconds]
<d_bot> <EduardoRFS> hmmm if we could move the forall it would be safe right? Similar to how you can pack it on a record with universal quantification for that.
<d_bot> <EduardoRFS>
<d_bot> <EduardoRFS> ```ocaml
<d_bot> <EduardoRFS> val false_: 'a. 'a -> 'b. 'b -> 'b = assert false
<d_bot> <EduardoRFS> ```
<thizanne> Leonidas: looks like you're using Core and it deprecates Not_found itself
<thizanne> Eduardo: yes, it would work
<thizanne> compare: `let f : 'a -> < x : 'b -> 'b > = assert false;; let x = f ()` with `let f : 'a -> < x : 'b. 'b -> 'b > = assert false;; let x = f ()`
<thizanne> generalisation happens for free variables, if you quantify them they become bound and there's no need for generalisation anymor
<thizanne> (another way to see it: "_weak. _weak -> _weak" would make no sense)
<d_bot> <EduardoRFS> yeah that's what I thought, just trying to understand the advantages of moving the forall
<d_bot> <EduardoRFS> oh didn't knew that you could do universal quantification with objects, most of the time I do it with records
<thizanne> for trying stuff, objects are slightly less verbose
<thizanne> (for this purpose specifically I mean)
<d_bot> <EduardoRFS> yeah but sadly you cannot unbox them right?
<d_bot> <EduardoRFS> yeah you cannot
cedric has quit [Quit: Konversation terminated!]
daachi has joined #ocaml
favonia has quit [Ping timeout: 268 seconds]
favonia has joined #ocaml
Stumpfenstiel has quit [Ping timeout: 252 seconds]
Tuplanolla has quit [Quit: Leaving.]
daachi has quit [Ping timeout: 264 seconds]
shawnw has joined #ocaml