ply : M.t -&gt; M.t list -&gt; M.t end

# module List_Additive_Int_Apply = List_Apply(Int.Additive.Magma);;
module List_Additive_Int_Apply : sig val apply : int -&gt; int list -&gt; int end

# module List_Subtractive_Int_Apply = List_Apply(Int.Subtractive.Magma);;
module List_Subtractive_Int_Apply : sig val apply : int -&gt; int list -&gt; int end

# let adder = List_Additive_Int_Apply.apply;;
val adder : int -&gt; int list -&gt; int = &lt;fun&gt;

# let subtractor = List_Subtractive_Int_Apply.apply;;
val s