On 11/09/2011 02:29 AM, Cedric Cellier wrote: > For some reasons though, despite functors being one of the greatest > strength of the language, we do seam shy to use, recommand or brag > about them. I wonder if this is due to the lack of proper documentation ? I don't think there is a lack of proper documentation: it is introduced right away in the "tutorial" part of the Ocaml manual (Part I), it is described in the language description (Part II) and there are a couple of examples in the std lib (Part IV). What do you think it lacks to be properly documented (at least w.r.t other features of Ocaml)? I actually wonder if they just *look* too complicated? Maybe because they are verbose? Each time you define a functor you also have to give the signature of its argument, which, compared to a simple "include" can look overkilling. Concretely: module A = struct ... end module B = struct include A ... end VS module A = struct ... end module type B_INPUT = sig ... (can be big) end module Make_B (X:B_INPUT) = struct ... end For one module that's fine, but when you start having lots of modules and intricate interactions between them, that can start to be a pain in the ass. In addition, this include->functor switch happens quite often when you have sources that were not written in the first place with functors in mind, so this is not an uncommon situation. I think personally that this verbosity is actually a good thing because it forces to give some documentation which is particularly needed when many modules are interacting. But then this documentation argument is a bit contradictory with what we sell to beginners when they learn Ocaml: "Ocaml is great because it has type inference, this removes verbosity!"... -- Vincent Aravantinos Postdoctoral Fellow, Concordia University, Hardware Verification Group http://users.encs.concordia.ca/~vincent