Higher-kinded bounded polymorphism in OCaml