Higher_kinded.S
type 'a t
type higher_kinded
val inject : 'a t -> ('a -> higher_kinded) hk
val project : ('a -> higher_kinded) hk -> 'a t