functor (D : Default) -> sig type a = D.a val default : unit -> a end