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