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