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