Since OCaml doesn't have first-class higher-kinded types in the way Scala and Haskell do, I didn't think it would be acceptable by ekmett. Higher-kinded programming in OCaml. Contribute to ocamllabs/higher development by creating an account on GitHub. While OCaml libraries are no stranger to monads they usually only include .. From Haskell, I want effects tracked in types, higher-kinded types. module type MonadSig = sig type 'a t val bind: 'a t -> ('a -> 'b t) -> 'b t val has not been extended to abstraction over higher-kinded variables. I was reading the “Lightweight Higher-Kinded Polymorphism” paper and I In Haskell data and newtype definitions create fresh data types.