1. camlspotter
  2. ocaml-llvm-phantom

Commits

camlspotter  committed 876f924

moved Phantom from old Spotlib

  • Participants
  • Parent commits b104a35
  • Branches default

Comments (0)

Files changed (2)

File lib/phantom.ml

View file
+(* This is an autogenerated file. Do not edit. *)
+
+type ('phantom, 'content) t = 'content
+
+module Open = struct
+  type unknown
+  let unknown : unknown = Obj.magic 0
+  let (!<) x = x
+  let (!>) x = x
+  let (!?) x = x
+end
+include Open
+let unsafe x = x
+let magic x = x
+
+let map f x = f x
+let combine x y = (x,y)
+
+type ('phantom, 'content) ts = 'content list
+
+let c0  = []
+let c1 t0 = [t0]
+let c2 t0 t1 = [t0; t1]
+let c3 t0 t1 t2 = [t0; t1; t2]
+let c4 t0 t1 t2 t3 = [t0; t1; t2; t3]
+let c5 t0 t1 t2 t3 t4 = [t0; t1; t2; t3; t4]
+let c6 t0 t1 t2 t3 t4 t5 = [t0; t1; t2; t3; t4; t5]
+let c7 t0 t1 t2 t3 t4 t5 t6 = [t0; t1; t2; t3; t4; t5; t6]
+let c8 t0 t1 t2 t3 t4 t5 t6 t7 = [t0; t1; t2; t3; t4; t5; t6; t7]
+let c9 t0 t1 t2 t3 t4 t5 t6 t7 t8 = [t0; t1; t2; t3; t4; t5; t6; t7; t8]
+let c10 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 = [t0; t1; t2; t3; t4; t5; t6; t7; t8; t9]
+
+let d0 = function [] -> () | _ -> assert false
+let d1 = function [t0] -> (t0) | _ -> assert false
+let d2 = function [t0; t1] -> (t0, t1) | _ -> assert false
+let d3 = function [t0; t1; t2] -> (t0, t1, t2) | _ -> assert false
+let d4 = function [t0; t1; t2; t3] -> (t0, t1, t2, t3) | _ -> assert false
+let d5 = function [t0; t1; t2; t3; t4] -> (t0, t1, t2, t3, t4) | _ -> assert false
+let d6 = function [t0; t1; t2; t3; t4; t5] -> (t0, t1, t2, t3, t4, t5) | _ -> assert false
+let d7 = function [t0; t1; t2; t3; t4; t5; t6] -> (t0, t1, t2, t3, t4, t5, t6) | _ -> assert false
+let d8 = function [t0; t1; t2; t3; t4; t5; t6; t7] -> (t0, t1, t2, t3, t4, t5, t6, t7) | _ -> assert false
+let d9 = function [t0; t1; t2; t3; t4; t5; t6; t7; t8] -> (t0, t1, t2, t3, t4, t5, t6, t7, t8) | _ -> assert false
+let d10 = function [t0; t1; t2; t3; t4; t5; t6; t7; t8; t9] -> (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) | _ -> assert false
+
+let get0 l = List.nth l 0
+let get1 l = List.nth l 1
+let get2 l = List.nth l 2
+let get3 l = List.nth l 3
+let get4 l = List.nth l 4
+let get5 l = List.nth l 5
+let get6 l = List.nth l 6
+let get7 l = List.nth l 7
+let get8 l = List.nth l 8
+let get9 l = List.nth l 9
+let get10 l = List.nth l 10
+
+type tpl0 = unit
+type 'a0 tpl1 = ('a0 * unit)
+type ('a0,'a1) tpl2 = ('a0 * ('a1 * unit))
+type ('a0,'a1,'a2) tpl3 = ('a0 * ('a1 * ('a2 * unit)))
+type ('a0,'a1,'a2,'a3) tpl4 = ('a0 * ('a1 * ('a2 * ('a3 * unit))))
+type ('a0,'a1,'a2,'a3,'a4) tpl5 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * unit)))))
+type ('a0,'a1,'a2,'a3,'a4,'a5) tpl6 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * unit))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6) tpl7 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * unit)))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7) tpl8 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * unit))))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8) tpl9 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * ('a8 * unit)))))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8,'a9) tpl10 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * ('a8 * ('a9 * unit))))))))))
+
+let uncurry0 f _tpl = f ()
+let uncurry1 f tpl = f (get0 tpl : ('a0,'c) t)
+let uncurry2 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t)
+let uncurry3 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t)
+let uncurry4 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t) (get3 tpl : ('a3,'c) t)
+let uncurry5 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t) (get3 tpl : ('a3,'c) t) (get4 tpl : ('a4,'c) t)
+let uncurry6 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t) (get3 tpl : ('a3,'c) t) (get4 tpl : ('a4,'c) t) (get5 tpl : ('a5,'c) t)
+let uncurry7 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t) (get3 tpl : ('a3,'c) t) (get4 tpl : ('a4,'c) t) (get5 tpl : ('a5,'c) t) (get6 tpl : ('a6,'c) t)
+let uncurry8 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t) (get3 tpl : ('a3,'c) t) (get4 tpl : ('a4,'c) t) (get5 tpl : ('a5,'c) t) (get6 tpl : ('a6,'c) t) (get7 tpl : ('a7,'c) t)
+let uncurry9 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t) (get3 tpl : ('a3,'c) t) (get4 tpl : ('a4,'c) t) (get5 tpl : ('a5,'c) t) (get6 tpl : ('a6,'c) t) (get7 tpl : ('a7,'c) t) (get8 tpl : ('a8,'c) t)
+let uncurry10 f tpl = f (get0 tpl : ('a0,'c) t) (get1 tpl : ('a1,'c) t) (get2 tpl : ('a2,'c) t) (get3 tpl : ('a3,'c) t) (get4 tpl : ('a4,'c) t) (get5 tpl : ('a5,'c) t) (get6 tpl : ('a6,'c) t) (get7 tpl : ('a7,'c) t) (get8 tpl : ('a8,'c) t) (get9 tpl : ('a9,'c) t)
+
+let curry0 f () = f c0
+let curry1 f (v0 : ('a0,'c) t) = f (c1 v0)
+let curry2 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) = f (c2 v0 v1)
+let curry3 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) = f (c3 v0 v1 v2)
+let curry4 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) (v3 : ('a3,'c) t) = f (c4 v0 v1 v2 v3)
+let curry5 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) (v3 : ('a3,'c) t) (v4 : ('a4,'c) t) = f (c5 v0 v1 v2 v3 v4)
+let curry6 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) (v3 : ('a3,'c) t) (v4 : ('a4,'c) t) (v5 : ('a5,'c) t) = f (c6 v0 v1 v2 v3 v4 v5)
+let curry7 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) (v3 : ('a3,'c) t) (v4 : ('a4,'c) t) (v5 : ('a5,'c) t) (v6 : ('a6,'c) t) = f (c7 v0 v1 v2 v3 v4 v5 v6)
+let curry8 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) (v3 : ('a3,'c) t) (v4 : ('a4,'c) t) (v5 : ('a5,'c) t) (v6 : ('a6,'c) t) (v7 : ('a7,'c) t) = f (c8 v0 v1 v2 v3 v4 v5 v6 v7)
+let curry9 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) (v3 : ('a3,'c) t) (v4 : ('a4,'c) t) (v5 : ('a5,'c) t) (v6 : ('a6,'c) t) (v7 : ('a7,'c) t) (v8 : ('a8,'c) t) = f (c9 v0 v1 v2 v3 v4 v5 v6 v7 v8)
+let curry10 f (v0 : ('a0,'c) t) (v1 : ('a1,'c) t) (v2 : ('a2,'c) t) (v3 : ('a3,'c) t) (v4 : ('a4,'c) t) (v5 : ('a5,'c) t) (v6 : ('a6,'c) t) (v7 : ('a7,'c) t) (v8 : ('a8,'c) t) (v9 : ('a9,'c) t) = f (c10 v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+module List = struct
+  let unsafe_list x = x
+  let to_list v = v
+  let to_unknown_list v = v
+  let to_array = Array.of_list
+  let to_unknown_array = Array.of_list
+  let of_unknown_list v = v
+  let of_unknown_array = Array.to_list
+  let unsafe_of_list v = v
+  let unsafe_of_array = Array.to_list
+  
+  let length = List.length 
+  let map = List.map
+  let combine = List.combine
+
+  type ('phantom, 'content) t = ('phantom, 'content) ts
+end
+

File lib/phantom.mli

View file
+(* This is an autogenerated file. Do not edit. *)
+
+(**
+   Opening this module like Spotlib.Spot.Phantom is NOT recommended. 
+   Instead, open Spotlib.Spot.Phantom.Open. Using a module alias is also helpful:
+   
+   module P = Spotlib.Spot.Phantom
+   open P.Open
+*)
+type ('phantom, 'cont) t
+
+(* Rather than open Phantom, I recommend to open Phantom.Open *)
+module Open : sig
+  type unknown 
+  val unknown : unknown
+  val (!<) : ('a, 'cont) t -> 'cont
+  (** Forget the phantom *)
+  val (!>) : 'cont -> (unknown, 'cont) t
+  (** Safe lift up with the unknown phantom *)
+  val (!?) : ('a, 'cont) t -> (unknown, 'cont) t
+  (** Forget the phantom *)
+end
+type unknown = Open.unknown
+val unknown : Open.unknown
+val (!<) : ('a, 'cont) t -> 'cont
+val (!>) : 'cont -> (unknown, 'cont) t
+val (!?) : ('a, 'cont) t -> (unknown, 'cont) t
+
+val unsafe : 'cont -> ('unsafe, 'cont) t
+(** [unsafe v] lifts up [v] of [elt] to one with any phantom. Use with care. *)
+val magic : ('a, 'cont) t -> ('unsafe, 'cont) t
+(** [magic v] changes the phantom ov [v]. Use with care. *)
+
+val map : ('cont -> 'cont2) -> ('a, 'cont) t -> ('a, 'cont2) t
+val combine : 'tag -> ('a, 'cont) t -> ('a, 'tag * 'cont) t
+
+type ('phantom, 'cont) ts
+(** phantom heterogeneous 'cont list *)
+
+module List : sig
+  val unsafe_list : 'cont list -> ('unsafe, 'cont) ts
+  (** [unsafe_list ls] lifts up [ls] of [elt list] to a list with any phantom. Use with care. *)
+  val to_list : ('a, 'cont) ts -> 'cont list
+  val to_unknown_list : ('a, 'cont) ts -> (unknown, 'cont) t list
+  val to_array : ('a, 'cont) ts -> 'cont array
+  val to_unknown_array : ('a, 'cont) ts -> (unknown, 'cont) t array
+  val of_unknown_list : (unknown, 'cont) t list -> (unknown, 'cont) ts
+  val of_unknown_array : (unknown, 'cont) t array -> (unknown, 'cont) ts
+  val unsafe_of_list : 'cont list -> ('unsafe, 'cont) ts
+  val unsafe_of_array : 'cont array -> ('unsafe, 'cont) ts
+  
+  val length : ('a, 'cont) ts -> int
+  val map : ('cont -> 'cont2) -> ('a, 'cont) ts -> ('a, 'cont2) ts
+  val combine : 'tag list -> ('a, 'cont) ts -> ('a, ('tag * 'cont)) ts
+
+  type ('phantom, 'cont) t = ('phantom, 'cont) ts
+end
+
+(* This encoding is correct only if the parameter cannot be the unit or a tuple *)
+type tpl0 = unit
+type 'a0 tpl1 = ('a0 * unit)
+type ('a0,'a1) tpl2 = ('a0 * ('a1 * unit))
+type ('a0,'a1,'a2) tpl3 = ('a0 * ('a1 * ('a2 * unit)))
+type ('a0,'a1,'a2,'a3) tpl4 = ('a0 * ('a1 * ('a2 * ('a3 * unit))))
+type ('a0,'a1,'a2,'a3,'a4) tpl5 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * unit)))))
+type ('a0,'a1,'a2,'a3,'a4,'a5) tpl6 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * unit))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6) tpl7 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * unit)))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7) tpl8 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * unit))))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8) tpl9 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * ('a8 * unit)))))))))
+type ('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8,'a9) tpl10 = ('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * ('a8 * ('a9 * unit))))))))))
+
+val c0 : (tpl0,'c) ts
+val c1 : ('a0,'c) t -> ('a0 tpl1,'c) ts
+val c2 : ('a0,'c) t -> ('a1,'c) t -> (('a0,'a1) tpl2,'c) ts
+val c3 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> (('a0,'a1,'a2) tpl3,'c) ts
+val c4 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> (('a0,'a1,'a2,'a3) tpl4,'c) ts
+val c5 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> (('a0,'a1,'a2,'a3,'a4) tpl5,'c) ts
+val c6 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> (('a0,'a1,'a2,'a3,'a4,'a5) tpl6,'c) ts
+val c7 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> (('a0,'a1,'a2,'a3,'a4,'a5,'a6) tpl7,'c) ts
+val c8 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> (('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7) tpl8,'c) ts
+val c9 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> ('a8,'c) t -> (('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8) tpl9,'c) ts
+val c10 : ('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> ('a8,'c) t -> ('a9,'c) t -> (('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8,'a9) tpl10,'c) ts
+
+val d0 : (tpl0,'c) ts -> unit
+val d1 : ('a0 tpl1,'c) ts -> ('a0,'c) t
+val d2 : (('a0,'a1) tpl2,'c) ts -> ('a0,'c) t * ('a1,'c) t
+val d3 : (('a0,'a1,'a2) tpl3,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t
+val d4 : (('a0,'a1,'a2,'a3) tpl4,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t * ('a3,'c) t
+val d5 : (('a0,'a1,'a2,'a3,'a4) tpl5,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t * ('a3,'c) t * ('a4,'c) t
+val d6 : (('a0,'a1,'a2,'a3,'a4,'a5) tpl6,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t * ('a3,'c) t * ('a4,'c) t * ('a5,'c) t
+val d7 : (('a0,'a1,'a2,'a3,'a4,'a5,'a6) tpl7,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t * ('a3,'c) t * ('a4,'c) t * ('a5,'c) t * ('a6,'c) t
+val d8 : (('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7) tpl8,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t * ('a3,'c) t * ('a4,'c) t * ('a5,'c) t * ('a6,'c) t * ('a7,'c) t
+val d9 : (('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8) tpl9,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t * ('a3,'c) t * ('a4,'c) t * ('a5,'c) t * ('a6,'c) t * ('a7,'c) t * ('a8,'c) t
+val d10 : (('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8,'a9) tpl10,'c) ts -> ('a0,'c) t * ('a1,'c) t * ('a2,'c) t * ('a3,'c) t * ('a4,'c) t * ('a5,'c) t * ('a6,'c) t * ('a7,'c) t * ('a8,'c) t * ('a9,'c) t
+
+val get0 : (('a0 * _),'c) ts -> ('a0,'c) t
+val get1 : (('a0 * ('a1 * _)),'c) ts -> ('a1,'c) t
+val get2 : (('a0 * ('a1 * ('a2 * _))),'c) ts -> ('a2,'c) t
+val get3 : (('a0 * ('a1 * ('a2 * ('a3 * _)))),'c) ts -> ('a3,'c) t
+val get4 : (('a0 * ('a1 * ('a2 * ('a3 * ('a4 * _))))),'c) ts -> ('a4,'c) t
+val get5 : (('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * _)))))),'c) ts -> ('a5,'c) t
+val get6 : (('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * _))))))),'c) ts -> ('a6,'c) t
+val get7 : (('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * _)))))))),'c) ts -> ('a7,'c) t
+val get8 : (('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * ('a8 * _))))))))),'c) ts -> ('a8,'c) t
+val get9 : (('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * ('a8 * ('a9 * _)))))))))),'c) ts -> ('a9,'c) t
+val get10 : (('a0 * ('a1 * ('a2 * ('a3 * ('a4 * ('a5 * ('a6 * ('a7 * ('a8 * ('a9 * ('a10 * _))))))))))),'c) ts -> ('a10,'c) t
+
+val uncurry0 : (unit -> 'z) -> ((tpl0, 'c) ts -> 'z)
+val uncurry1 : (('a0,'c) t -> 'z) -> (('a0 tpl1, 'c) ts -> 'z)
+val uncurry2 : (('a0,'c) t -> ('a1,'c) t -> 'z) -> ((('a0,'a1) tpl2, 'c) ts -> 'z)
+val uncurry3 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> 'z) -> ((('a0,'a1,'a2) tpl3, 'c) ts -> 'z)
+val uncurry4 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> 'z) -> ((('a0,'a1,'a2,'a3) tpl4, 'c) ts -> 'z)
+val uncurry5 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> 'z) -> ((('a0,'a1,'a2,'a3,'a4) tpl5, 'c) ts -> 'z)
+val uncurry6 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> 'z) -> ((('a0,'a1,'a2,'a3,'a4,'a5) tpl6, 'c) ts -> 'z)
+val uncurry7 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> 'z) -> ((('a0,'a1,'a2,'a3,'a4,'a5,'a6) tpl7, 'c) ts -> 'z)
+val uncurry8 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> 'z) -> ((('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7) tpl8, 'c) ts -> 'z)
+val uncurry9 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> ('a8,'c) t -> 'z) -> ((('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8) tpl9, 'c) ts -> 'z)
+val uncurry10 : (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> ('a8,'c) t -> ('a9,'c) t -> 'z) -> ((('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8,'a9) tpl10, 'c) ts -> 'z)
+
+val curry0 : ((tpl0,'c) ts -> 'z) -> unit -> 'z
+val curry1 : (('a0 tpl1,'c) ts -> 'z) -> (('a0,'c) t -> 'z)
+val curry2 : ((('a0,'a1) tpl2,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> 'z)
+val curry3 : ((('a0,'a1,'a2) tpl3,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> 'z)
+val curry4 : ((('a0,'a1,'a2,'a3) tpl4,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> 'z)
+val curry5 : ((('a0,'a1,'a2,'a3,'a4) tpl5,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> 'z)
+val curry6 : ((('a0,'a1,'a2,'a3,'a4,'a5) tpl6,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> 'z)
+val curry7 : ((('a0,'a1,'a2,'a3,'a4,'a5,'a6) tpl7,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> 'z)
+val curry8 : ((('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7) tpl8,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> 'z)
+val curry9 : ((('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8) tpl9,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> ('a8,'c) t -> 'z)
+val curry10 : ((('a0,'a1,'a2,'a3,'a4,'a5,'a6,'a7,'a8,'a9) tpl10,'c) ts -> 'z) -> (('a0,'c) t -> ('a1,'c) t -> ('a2,'c) t -> ('a3,'c) t -> ('a4,'c) t -> ('a5,'c) t -> ('a6,'c) t -> ('a7,'c) t -> ('a8,'c) t -> ('a9,'c) t -> 'z)