On 11/09/2011 10:41 AM, Vincent Aravantinos wrote:
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

This verbosity problem is actually less true since 3.12 with the introduction of "module type of":

module A = struct
  ...
end

module Make_B (X: module type of A) = struct
  ...
end

Which is then quite close to the "include" version.