mapping.ml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21open! Base open! Import type ('m, 'w) t = T : ('i Index.t * 'a, 'b, 'w) Hk.t2 -> ('i -> 'a -> 'b, 'w) t [@@unboxed] let with_hk f (T t) = T (f t) module Make4 (T : sig type ('a, 'b, 'c, 'd) t end) = struct include Hk.Make4 (T) let projected t ~f = inject (f (project t)) let injected t ~f = let (T t) = f (T (inject t)) in project t ;; end