Module Semigroup

module Semigroup: sig .. end

Semigroups


module type S = sig .. end
module First: 
functor (T : sig
type t 
end) -> S  with type t = T.t
module Last: 
functor (T : sig
type t 
end) -> S  with type t = T.t