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