functor   (Shape : Shape) (Data : sig type t val structure : t Shape.structure end->   sig     val mem : 'Shape.k -> bool     val get : 'Shape.k -> (Data.t -> 'a) option     val set : 'Shape.k -> '-> Data.t -> Data.t   end