scum-multiset has quit [Quit: I have irrefutable proof that D < 0. It follows trivially from 2D > 3D, which is obviously true.]
Denommus` is now known as Denommus
pyon has joined #ocaml
lordkryss has quit [Quit: Connection closed for inactivity]
psy_ has joined #ocaml
psy_ has quit [Max SendQ exceeded]
psy_ has joined #ocaml
Denommus has quit [Ping timeout: 246 seconds]
ivan\ has quit [Ping timeout: 246 seconds]
bitemyapp has quit [Ping timeout: 252 seconds]
ivan\ has joined #ocaml
vanila has quit [Quit: Leaving]
edible_ has joined #ocaml
javamonn has quit [Remote host closed the connection]
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
MrScout_ has joined #ocaml
MrScout has quit [Ping timeout: 245 seconds]
ygrek has joined #ocaml
antegallya has joined #ocaml
swgillespie has joined #ocaml
darkf has joined #ocaml
antegallya has quit [Quit: Leaving.]
Denommus has joined #ocaml
swgillespie has quit [Client Quit]
swgillespie has joined #ocaml
bitemyap1 has joined #ocaml
swgillespie has quit [Client Quit]
matason has joined #ocaml
Denommus has quit [Read error: Connection reset by peer]
Denommus has joined #ocaml
kdef has joined #ocaml
swgillespie has joined #ocaml
swgillespie has quit [Client Quit]
dav has quit [Ping timeout: 255 seconds]
idegen has quit [Quit: Leaving.]
wraithm has quit [Quit: leaving]
kushal has quit [Ping timeout: 265 seconds]
Denommus` has joined #ocaml
Denommus has quit [Ping timeout: 256 seconds]
dav has joined #ocaml
Denommus` is now known as Denommus
MrScout_ has quit [Remote host closed the connection]
javamonn has joined #ocaml
MrScout has joined #ocaml
javamonn has quit [Remote host closed the connection]
avsm has quit [Quit: Leaving.]
Denommus has quit [Read error: Connection reset by peer]
Denommus has joined #ocaml
ljs has quit [Quit: Be back later ...]
matason has quit [Ping timeout: 248 seconds]
ammbot has joined #ocaml
ammbot has quit [Remote host closed the connection]
edible_ has quit [Quit: Page closed]
MrScout has quit [Remote host closed the connection]
javamonn has joined #ocaml
bitemyap1 has quit [Ping timeout: 244 seconds]
bitemyap1 has joined #ocaml
javamonn has quit [Remote host closed the connection]
Denommus` has joined #ocaml
Denommus has quit [Ping timeout: 252 seconds]
araujo has joined #ocaml
Denommus` is now known as Denommus
MrScout has joined #ocaml
MrScout has quit [Read error: Connection reset by peer]
MrScout has joined #ocaml
A1977494 has joined #ocaml
mcc has joined #ocaml
A1977494 has left #ocaml [#ocaml]
Denommus` has joined #ocaml
slash^ has joined #ocaml
<mcc>
ok i just installed a module i wrote myself using opam pin and this feels friggin magic
Denommus has quit [Ping timeout: 244 seconds]
Denommus` is now known as Denommus
dubosec has joined #ocaml
dubosec has quit [Client Quit]
testcocoon has joined #ocaml
MercurialAlchemi has joined #ocaml
Denommus` has joined #ocaml
Denommus has quit [Ping timeout: 264 seconds]
Denommus` is now known as Denommus
kdef has quit [Quit: Leaving]
tane has joined #ocaml
kushal has joined #ocaml
Denommus has quit [Read error: Connection reset by peer]
Denommus has joined #ocaml
ygrek has quit [Ping timeout: 264 seconds]
kushal has quit [Quit: Leaving]
hilquias has quit [Remote host closed the connection]
swgillespie has joined #ocaml
Denommus has quit [Read error: Connection reset by peer]
Denommus` has joined #ocaml
Niji has joined #ocaml
Denommus` is now known as Denommus
swgillespie has quit [Read error: Connection reset by peer]
Denommus has quit [Read error: Connection reset by peer]
Denommus has joined #ocaml
avsm has joined #ocaml
ontologiae has joined #ocaml
cmtptr has quit [Ping timeout: 244 seconds]
cmtptr has joined #ocaml
<AltGr>
mcc: Thanks! :)
adrien_ is now known as adrien
Denommus has quit [Ping timeout: 250 seconds]
ontologiae has quit [Ping timeout: 240 seconds]
Niji has quit [Read error: Connection reset by peer]
antkong_ has joined #ocaml
Haudegen has quit [Ping timeout: 252 seconds]
Niji has joined #ocaml
hilquias has joined #ocaml
mcc has quit [Quit: This computer has gone to sleep]
araujo has quit [Ping timeout: 245 seconds]
axiles has quit [Ping timeout: 272 seconds]
araujo has joined #ocaml
Haudegen has joined #ocaml
ygrek has joined #ocaml
avsm has quit [Quit: Leaving.]
robbert has joined #ocaml
robbert has quit [Changing host]
robbert has joined #ocaml
tane has quit [Quit: Verlassend]
hilquias has quit [Remote host closed the connection]
Niji has quit [Ping timeout: 245 seconds]
axiles has joined #ocaml
mengu has joined #ocaml
Niji has joined #ocaml
antkong_ has quit [Quit: antkong_]
Simn has joined #ocaml
octachron has joined #ocaml
tsumetai` has joined #ocaml
ggole has joined #ocaml
larhat has joined #ocaml
martintrojer has quit [Max SendQ exceeded]
fedjo has joined #ocaml
martintrojer has joined #ocaml
Gama11 has joined #ocaml
Gama11_ has joined #ocaml
Gama11 has quit [Ping timeout: 248 seconds]
phasip has joined #ocaml
thomasga has joined #ocaml
<phasip>
Hey, I am trying to build a package using lwt_timeout, after trying ocamlopt and noticing that all the deps of lwt_timeout would need to be added to the command line I tried ocamlbuild, but what I get now is 'No implementations provided for the following modules: Lwt_timeout' - I tried to add -libs lwt_timeout but it complains that it cannot find lwt_timeout.cmxa ... I have cmx,cmti,cmt,cmi,mli but not cmxa
<phasip>
My command line: ocamlbuild -r -use-ocamlfind -pkgs lwt,unix main.native
oscar_to1o has quit [Ping timeout: 255 seconds]
Gama11 has joined #ocaml
mort___ has joined #ocaml
Haudegen has quit [Ping timeout: 240 seconds]
Gama11_ has quit [Ping timeout: 276 seconds]
octachron has quit [Ping timeout: 265 seconds]
darkf_ has joined #ocaml
Haudegen has joined #ocaml
darkf has quit [Ping timeout: 245 seconds]
milosn has quit [Ping timeout: 276 seconds]
contempt has quit [Ping timeout: 240 seconds]
contempt has joined #ocaml
dsheets has quit [Ping timeout: 256 seconds]
octachron has joined #ocaml
testcocoon has quit [Ping timeout: 264 seconds]
<Leonidas>
phasip: have you tried adding lwt.unix to -pkgs?
darkf_ is now known as darkf
testcocoon has joined #ocaml
mengu has quit [Remote host closed the connection]
<Leonidas>
phasip: when you look at the docs, Lwt_timeout is under "Unix bindings", which means "lwt.unix".
acieroid has joined #ocaml
mbac has joined #ocaml
A1977494 has joined #ocaml
A1977494 has left #ocaml [#ocaml]
<phasip>
Yeah, it seems clear when you know it - and probably is if you are more used to ocaml =) - Just starting and having trouble whenever I try to use a library
<Leonidas>
yeah, no worries :) it is indeed confusing at first.
pii4 has quit [Quit: [-.-]...]
jonludlam has joined #ocaml
<phasip>
Btw, is ocamlbuild the tool mostly used to compile? I was trying to use ocamlopt and it seems that ocamlbuild simplifies things a lot
<companion_cube>
yes, ocamlbuild is quite widely used
<companion_cube>
it has drawbacks but for many projects it's good enough
<phasip>
Allright
<Leonidas>
phasip: ocamlbuild uses ocamlopt, you can specify -classic-display to see the commands
<Leonidas>
hint: it's not pretty
<phasip>
heh, I'll stick to ocamlbuild
<Leonidas>
what happened with whitequark? haven't seen him in quite some time
<companion_cube>
hmmm, indeed
freling has joined #ocaml
thomasga has joined #ocaml
<companion_cube>
his irc logger is still here though
matason has joined #ocaml
A19774941 has joined #ocaml
A19774941 has left #ocaml [#ocaml]
dsheets has joined #ocaml
mengu has quit [Remote host closed the connection]
AltGr has left #ocaml [#ocaml]
oscar_toro has quit [Ping timeout: 250 seconds]
thomasga has quit [Quit: Leaving.]
lordkryss has joined #ocaml
axiles has quit [Ping timeout: 245 seconds]
axiles has joined #ocaml
Niji has quit [Ping timeout: 245 seconds]
Hannibal_Smith has joined #ocaml
milosn has joined #ocaml
thomasga has joined #ocaml
<MercurialAlchemi>
companion_cube: but is this a strong proof of whitequark's existence?
thomasga has quit [Client Quit]
<companion_cube>
it proves whitequark existence in the past
thomasga has joined #ocaml
<MercurialAlchemi>
but not his continued existence
<MercurialAlchemi>
I think we should ask CERN
<companion_cube>
I hope they won't accelerate matter until they produce a high-energy whitequark
<companion_cube>
that would be dangerous
<Leonidas>
his twitter account is pretty active, so I suppose his continued existence is a fact
axiles has quit [Ping timeout: 252 seconds]
<companion_cube>
maybe he stopped writing OCaml for a while
Haudegen has quit [Ping timeout: 256 seconds]
oscar_toro has joined #ocaml
thomasga has quit [Quit: Leaving.]
axiles has joined #ocaml
Haudegen has joined #ocaml
Kakadu has joined #ocaml
pii4 has joined #ocaml
TheLemonMan has joined #ocaml
milosn has quit [Ping timeout: 264 seconds]
luzie has quit [Quit: WeeChat 1.2-dev]
luzie has joined #ocaml
antkong has joined #ocaml
mengu has joined #ocaml
testcocoon has quit [Ping timeout: 264 seconds]
milosn has joined #ocaml
mengu__ has joined #ocaml
antkong has quit [Ping timeout: 265 seconds]
mengu has quit [Ping timeout: 245 seconds]
matason has quit [Ping timeout: 250 seconds]
freling has quit [Quit: Leaving.]
axiles has quit [Ping timeout: 272 seconds]
axiles has joined #ocaml
testcocoon has joined #ocaml
_andre has joined #ocaml
matason has joined #ocaml
mengu__ has quit [Ping timeout: 256 seconds]
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
<companion_cube>
oh, last log from him I have is 26 March :/
tane has joined #ocaml
milosn has quit [Ping timeout: 255 seconds]
darkf has quit [Read error: Connection reset by peer]
darkf has joined #ocaml
ygrek has quit [Ping timeout: 265 seconds]
oscar_toro has quit [Quit: Lost terminal]
<phasip>
Have I understood correctly that if I have a function that may take a long time, I cannot use lwt to put it in a thread and abort it if it takes too long? - That lwt only operates on it's own methods and that the rest non-lwt code cannot be interrupted
<Leonidas>
phasip: yes, Lwt only does cooperative multitasking
badkins has joined #ocaml
axiles has quit [Ping timeout: 252 seconds]
freling has joined #ocaml
matason has quit [Ping timeout: 245 seconds]
<phasip>
But can lwt_preemptive actually abort a computation that has started? I have a function f that can return three values, -1,0,1 but it may take a long time to finish. I want to add a timeout that aborts the function after 60 seconds and acts as if the function returned 0, if the function returns earlier I do not want to wait the rest of the 60 sec
<companion_cube>
I don't think so
<flux>
I doubt it, killing threads is inherently risky proposition
<phasip>
I tried using fork but it sometimes got stuck - I think it was because the child terminated before I had time to run waitpid
<companion_cube>
unless you use Thread.kill... ?
<flux>
though I think there might be some solutions
<flux>
companion_cube, is it actually implemented?
<phasip>
I got a not implemented error when i tried atleast
<flux>
I think there is a solution involving raising a signal from a SIGALRM handler
milosn has joined #ocaml
<companion_cube>
flux: I have no idea.
<companion_cube>
sub-processes might actually be more flexible
<flux>
yes, that's the proper&safe way to do it
<companion_cube>
because they can use another core, and are known to be easily killable
<phasip>
I guess I'll have to try that solution again then
<flux>
well, you could also embed a timer check into your algorithm
<flux>
..but it will slow it down :)
<adrien_znc>
14:04 < phasip> I tried using fork but it sometimes got stuck - I think it was because the child terminated before I had time to run waitpid
<flux>
maybe you need to ignore SIGCHLD
<adrien_znc>
until _something_ calls wait() or similar, the data will stay around
<adrien_znc>
but
<adrien_znc>
I wouldn't be surprised lwt does such handling itself
<adrien_znc>
and that you had a race between your code and the code from a library you use
<adrien_znc>
in doubt, strace
<adrien_znc>
Thread.kill is only implemented for VM threads iircs
<adrien_znc>
iirc*
<adrien_znc>
anyway, with posix threads it has several limitations so fork really is better
<phasip>
Feels like I'm diving very deep - starting with ocaml, not done much linux process interaction and now trying to identify the problem with strace ^_^
<adrien_znc>
if strace is easy
<adrien_znc>
s/if //
<adrien_znc>
(and if you pastebin the output I can look at it)
<flux>
phasip, that's great, now you know you're learning something new 8-)
<phasip>
Hehe
milosn has quit [Read error: Connection reset by peer]
milosn has quit [Read error: Connection reset by peer]
axiles has joined #ocaml
<companion_cube>
there are many libraries dedicated to subprocesses, I think
matason has joined #ocaml
milosn has joined #ocaml
ljs has joined #ocaml
ljs has quit [Client Quit]
testcocoon has quit [Ping timeout: 264 seconds]
thomasga has joined #ocaml
ygrek has joined #ocaml
milosn has quit [Ping timeout: 264 seconds]
Submarine has joined #ocaml
ljs has joined #ocaml
tane has quit [Quit: Verlassend]
milosn has joined #ocaml
ldopa has joined #ocaml
ygrek_ has joined #ocaml
f[x] has joined #ocaml
ygrek has quit [Ping timeout: 252 seconds]
idegen has joined #ocaml
idegen has quit [Client Quit]
Submarine has quit [Remote host closed the connection]
f[x] has quit [Remote host closed the connection]
idegen has joined #ocaml
ygrek has joined #ocaml
aubergines has joined #ocaml
ygrek_ has quit [Ping timeout: 264 seconds]
Submarine has joined #ocaml
thomasga has quit [Quit: Leaving.]
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
divyanshu has joined #ocaml
badkins has quit [Remote host closed the connection]
thomasga has joined #ocaml
ygrek has quit [Ping timeout: 272 seconds]
testcocoon has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
<phasip>
Okay, so I dont know what I do wrong. Heres a small example https://gist.github.com/Phasip/f09746914aeebf18cca9 - why does it output child finished before the first waiting for? and why do I get wait done for the same childpid and i multiple times?
ygrek has joined #ocaml
uris77 has joined #ocaml
<companion_cube>
first remark: use Printf or Format rather than concatenating string like this
<adrien_znc>
(Printf)
<adrien_znc>
phasip: strace :)
<adrien_znc>
also, you really should make your pattern match exhaustive
<flux>
printf also allows to easily flush the output
<flux>
I wonder if that could be misleading as there is no flushing
javamonn has joined #ocaml
<companion_cube>
what is the first matched used for? "let run = 2 in ..." alywas follows the same branch
<adrien_znc>
yeah, you must definitely flush
<flux>
I guess it's debugging
<phasip>
Yes, the run = 2 was originally the slow function
<phasip>
I should probably have put the sleep in there
<phasip>
Okay maybe i undestand
<phasip>
Flushing is the problem
<adrien_znc>
and print_endline will also flush
<phasip>
Child finishes - it flushes and outputs everyhing. parent runs second child and child finishes and outputs its buffer including the old part
<phasip>
and then it continues like that
<phasip>
It's only one write call when looking at strace
lordkryss has quit [Quit: Connection closed for inactivity]
<adrien_znc>
I get
<adrien_znc>
Waiting for 18571.
<adrien_znc>
child finished: 18571, 2
<adrien_znc>
with printf and flushes
<adrien_znc>
but operations on in/out_channel are buffered in ocaml-land
<adrien_znc>
and strace will only show the syscalls
<phasip>
Yep, flush fixes it!
<phasip>
adrien_znc: yeah, so: Parent fills buffer with A, child runs, adds B and flushes on exit output: AB, then parent adds more output to buffer so its now AA and runs child, which adds B and exits, AAB
<adrien_znc>
most probably, yeah
<phasip>
Anyway, Printf/Format, exhaustive pattern matching, did you see anything else that hurt your eyes?
<adrien_znc>
match foo with
<adrien_znc>
| x -> ...
<flux>
maybe you could move the functionality of child and parent to different functions, and then move fork with the pattern matching and waiting to its own functions, and then the loop would be composed from your forking and the two other functions. if you want to go overboard with it ;-)
<adrien_znc>
leading '|' and no indent (I used to put indent but stopped)
kdef has joined #ocaml
<Leonidas>
yeah, me too, somehow
<phasip>
Thanks! Lets see if I can get this working on the real function now
<Leonidas>
I put begin after the -> but that might just be me
<Leonidas>
or ( ) if begin/end looks too busy
<Leonidas>
also, 2 spaces indent :-)
<Leonidas>
also, let () = loop 0 ;)
<phasip>
2 spaces? Allrighty ^_^
divyanshu has quit [Ping timeout: 245 seconds]
<Leonidas>
I don't know if this is universal, but it works well for me.
<bernardofpc>
btw, an update with relations to ocp-indent behaviour would be probably nice
Submarine has joined #ocaml
Submarine has joined #ocaml
MrScout has quit [Ping timeout: 245 seconds]
MrScout has joined #ocaml
mxv has quit [Ping timeout: 244 seconds]
Hannibal_Smith has joined #ocaml
mxv has joined #ocaml
<dmbaturin>
bernardofpc: I'm pretty sure it's not going to be hard to obtain a permission or license clarification from INRIA.
<dmbaturin>
Apparently, some material from the original caml.inria.fr website and other places was already moved/imported to ocaml.org
<maurer>
Is there a clear way to build an opam package with debugging support?
claudiuc has joined #ocaml
javamonn has quit []
Sim_n has quit [Quit: Leaving]
matason has quit [Quit: matason]
fraggle-boate_ has joined #ocaml
jonludlam has joined #ocaml
psy_ has quit [Ping timeout: 250 seconds]
ontologiae has quit [Ping timeout: 252 seconds]
fraggle-boate has joined #ocaml
psy_ has joined #ocaml
fraggle-boate__ has quit [Ping timeout: 246 seconds]
fraggle-boate_ has quit [Ping timeout: 250 seconds]
ldopa has joined #ocaml
_andre has quit [Quit: leaving]
larhat has quit [Quit: Leaving.]
<bernardofpc>
is there a tree in OCaml-land (stdlib, batteries, CContainers, ...) that supports O(log n) for add / remove / index ?
<bernardofpc>
In fact, besides of_list (or equivalent) for building it at the beginning, I only need Tree.remove_idx my_tree idx
<struk|work>
in general I thought that is how ocaml implements the Map interface
ldopa has quit [Ping timeout: 245 seconds]
thomasga has joined #ocaml
<bernardofpc>
It does have an AVL tree inside, but I see no "n-th" to index elements inside
<bernardofpc>
(I don't want to remove by compare, but by its position on the sorted set)
<Drup>
isn't a map of ints enough ?
<bernardofpc>
I was looking into Set, will think a bit more on Map
<Drup>
I mean, do you really need the fact that it's the "position" (whatever that means in something that operates on O(log n) ...) or just an index is enough ?
<bernardofpc>
I need the position
<bernardofpc>
I mean, the tree stores an ordered set with k elements inside and O(log k) operations
<bernardofpc>
and I want to take the i-th out
mengu has joined #ocaml
jonludlam has quit [Ping timeout: 264 seconds]
BitPuffin has joined #ocaml
<bernardofpc>
I have written the set as a list, so for the moment I have an O(k) operation, and it's not *that* bad since k is small (< 1000)
<bernardofpc>
[B[Bbut it's not the riht data structure
ontologiae has joined #ocaml
Hannibal_Smith has quit [Quit: Leaving]
<Drup>
you do realize that finding the ith element in a set is not a O(log n) operation ?
<Drup>
(at least, not with an AVL implementation
<bernardofpc>
well, you must store the cardinal downwards
<bernardofpc>
so maybe not with stdlib's Set implementation (has only height as extra info)
Hannibal_Smith has joined #ocaml
tane has quit [Quit: Verlassend]
nojb has joined #ocaml
mcclurmc has quit [Ping timeout: 245 seconds]
MrScout has quit [Remote host closed the connection]
Algebr has quit [Remote host closed the connection]
MrScout has joined #ocaml
<companion_cube>
bernardofpc: good question
<companion_cube>
you add in front position?
<companion_cube>
hmm
<companion_cube>
it would be nice to have ornaments (?) to have one generic AVL implementation with arbitrary payload...
<reynir>
This is a bit off-topic, but I found Rob Pike had implemented "reduce" (left fold) in Go, and saw it was a bit flawed and fixed it https://github.com/robpike/filter/pull/1
<companion_cube>
olol
<reynir>
when I was writing the tests I ran into runtime type errors because I had reversed the order of the arguments to cons
<companion_cube>
the lack of polymorphism in go continues to baffle me
avsm has quit [Quit: Leaving.]
<reynir>
Yea, the bug I mentioned would have been caught during type checking heh
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
<struk|work>
honestly I do not see the appeal of Go whatsoever
<companion_cube>
concurrency, I guess
<struk|work>
I'm convinced it really solves those problems well enough either
<struk|work>
*not convinced
<companion_cube>
neither do I, but well, Rob Pike has made a great job advertising "simplicity"
reshtnk7 has quit [Remote host closed the connection]
<bernardofpc>
companion> you add in front position? -> in my specific case, I could sort and then input in the set, but I see no point in doing it in a stdlib type
<bernardofpc>
companion_cube: yeah, but you must have some kind of "update functions" that are run when you balance / insert
<companion_cube>
well, not many data structures offer both a set and an index semantics
<companion_cube>
especially because removal in a set changes many indices
Submarine has quit [Quit: Leaving]
<companion_cube>
(shifts them, more accurately)
<reynir>
what appealed to me was the concurrency primitives and that the language spec was short (it still manages to have plenty weird corner cases I found out)
<bernardofpc>
(so it'd be a large-ish module type for the functor input in you "ornamented-AVL")
<companion_cube>
bernardofpc: you might be interested in finger trees
<bernardofpc>
companion_cube: yeah, that's why you don't store the index itself, but the size downwards
<companion_cube>
although I'm not sure they perform that well in OCaml
<companion_cube>
I'm curious, why do you need the index for? random picking?
<bernardofpc>
permutations, so yeah
<bernardofpc>
I mean, it's a toy problem from my course, but since I know there's a data structure that does just that, I started searching in OCaml ;-)
<companion_cube>
maybe an AVL functorized over its payload is the way to go then
<companion_cube>
there are finger trees in batteries too, I think
Gama11 has quit [Read error: Connection reset by peer]
MrScout has quit [Remote host closed the connection]
MrScout has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 272 seconds]
badkins has quit []
kakadu_ has quit [Remote host closed the connection]
mengu has quit [Remote host closed the connection]
dsheets has joined #ocaml
kdef has quit [Quit: Leaving]
dav has quit [Remote host closed the connection]
ontologiae has quit [Ping timeout: 265 seconds]
jonludlam has joined #ocaml
badkins has joined #ocaml
mengu has joined #ocaml
pyon has quit [Ping timeout: 250 seconds]
Hannibal_Smith has quit [Quit: Leaving]
thomasga has quit [Quit: Leaving.]
pyon has joined #ocaml
antkong_ has joined #ocaml
mengu has quit [Ping timeout: 248 seconds]
nojb has quit [Quit: nojb]
<bernardofpc>
companion_cube: so, around 1500 elements BatFingerTree is better than a "dumb" list with O(n) operations
<bernardofpc>
(but maybe I'm not really making these O(n) operations really O(n), more tests incoming)
<bernardofpc>
in fact, there's already a factor of 2 for len=700 when there are "more O(n)" operations (at first I had just "small permutations" that didn't go very far in splitting the list)
<companion_cube>
if you have time, you should copy some AVL code and add the size in each node
<companion_cube>
so you can compare
<bernardofpc>
right
psy_ has quit [Ping timeout: 256 seconds]
<bernardofpc>
probably the set.ml code is a good starting point ?
psy_ has joined #ocaml
<companion_cube>
maybe so (LGPL license, just in case)