functor   (K : Key) (D : sig                    type key = K.t                    type data                    val name : string                    val compile : key -> data                  end->   sig type key = D.key type data = D.data val get : key -> data end