functor (Ord : Ord-> sig type t = Ord.t val ord : t ord end