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