From that other thread:
I do have a lib/dune file that says (library (name mylib)), so that would mean the module in lib/mylib.ml would be available as Mylib.Mylib and the module in lib/mymod.ml would be available as Mylib.Mymod. But that isn’t the case, i.e. this fails:
let _ = assert (Mylib.Mylib.one = 1)
let _ = assert (Mylib.Mymod.two = 2)
Instead, if I change (library (name mylib)) to (library (name foo)) (and modify test/dune accordingly), then these are suddenly available as Foo.Mylib and Foo.Mymod, i.e. this works:
let _ = assert (Foo.Mylib.one = 1)
let _ = assert (Foo.Mymod.two = 2)
Why does the first fail and the second work?