FWIW, `ocp-build` has a specific variable to overcome `ocamldep` limitations. You can for example describe a library like that: ``` begin library "foobar" requires = [ "unix" "my-other-lib" ] files = [ "bar.ml" (nodeps = [ "Foo" ]) (* <---- module Bar does not depend on Foo, even if `ocamldep` says the contrary *) "foo.ml" ] end ``` It also has a specific algorithm to discover cycles in build rules and display the cycle in a user-friendly fashion, so that finding the arguments for `nodeps` becomes easier. --Fabrice On Mon, Jul 11, 2016 at 5:33 PM Soegtrop, Michael < michael.soegtrop@intel.com> wrote: > Dear OCaml Users, > > a note for those reading this thread later: > > I finally used the module rec approach as outlined by Petter A. Urkedal in > his previous post, although some people said in various places that this is > overkill if you have issues with just a few functions. The module structure > implied by the module rec approach was in the end nicer than my original > module structure (which didn't work cause of the circular dependency). It > was also much less work to restructure the modules than I thought. I tried > several other approaches (function references, putting all functions > calling each other into one file, treat mli and ml files separately in the > build system), but they all appeared to be inferior, either in terms of > effort or in terms of clarity, usually both. > > So I came to the conclusion that long term there is no issue with properly > declaring recursive module structures using "module rec", although it can > be quite a pain short term. For resolving some short term hacks (e.g. for > experiments), one can still use the function reference approach. > > Best regards, > > Michael > > Intel Deutschland GmbH > Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany > Tel: +49 89 99 8853-0, www.intel.de > Managing Directors: Christin Eisenschmid, Christian Lamprechter > Chairperson of the Supervisory Board: Nicole Lau > Registered Office: Munich > Commercial Register: Amtsgericht Muenchen HRB 186928 > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs