Module Curry

let function_length: 'a => int;
let apply_args: ('a => 'b) => array(_) => 'b;
let app: ('a => 'b) => array('c) => 'd;
let apply1: ('a0 => 'a1) => 'a0 => 'a1;
let apply2: ('a0 => 'a1 => 'a2) => 'a0 => 'a1 => 'a2;
let apply3: ('a0 => 'a1 => 'a2 => 'a3) => 'a0 => 'a1 => 'a2 => 'a3;
let apply4: ('a0 => 'a1 => 'a2 => 'a3 => 'a4) => 'a0 => 'a1 => 'a2 => 'a3 => 'a4;
let apply5: ('a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5) => 'a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5;
let apply6: ('a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5 => 'a6) => 'a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5 => 'a6;
let apply7: ('a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5 => 'a6 => 'a7) => 'a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5 => 'a6 => 'a7;
let apply8: ('a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5 => 'a6 => 'a7 => 'a8) => 'a0 => 'a1 => 'a2 => 'a3 => 'a4 => 'a5 => 'a6 => 'a7 => 'a8;
let _1: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'i => 'b => 'c => 'd => 'e => 'f => 'g => 'h;
let __1: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'a => 'b => 'c => 'd => 'e => 'f => 'g => 'h;
let _2: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'i => 'j => 'c => 'd => 'e => 'f => 'g => 'h;
let __2: ('a => 'a => 'b => 'c => 'd => 'e => 'f => 'g) => 'a => 'a => 'b => 'c => 'd => 'e => 'f => 'g;
let _3: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'i => 'j => 'k => 'd => 'e => 'f => 'g => 'h;
let __3: ('a => 'a => 'a => 'b => 'c => 'd => 'e => 'f) => 'a => 'a => 'a => 'b => 'c => 'd => 'e => 'f;
let _4: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'i => 'j => 'k => 'l => 'e => 'f => 'g => 'h;
let __4: ('a => 'a => 'a => 'a => 'b => 'c => 'd => 'e) => 'a => 'a => 'a => 'a => 'b => 'c => 'd => 'e;
let _5: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'i => 'j => 'k => 'l => 'm => 'f => 'g => 'h;
let __5: ('a => 'a => 'a => 'a => 'a => 'b => 'c => 'd) => 'a => 'a => 'a => 'a => 'a => 'b => 'c => 'd;
let _6: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'i => 'j => 'k => 'l => 'm => 'n => 'g => 'h;
let __6: ('a => 'a => 'a => 'a => 'a => 'a => 'b => 'c) => 'a => 'a => 'a => 'a => 'a => 'a => 'b => 'c;
let _7: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h) => 'i => 'j => 'k => 'l => 'm => 'n => 'o => 'p;
let __7: ('a => 'a => 'a => 'a => 'a => 'a => 'a => 'b) => 'a => 'a => 'a => 'a => 'a => 'a => 'a => 'b;
let _8: ('a => 'b => 'c => 'd => 'e => 'f => 'g => 'h => 'i) => 'j => 'k => 'l => 'm => 'n => 'o => 'p => 'q => 'r;
let __8: ('a => 'a => 'a => 'a => 'a => 'a => 'a => 'a => 'b) => 'a => 'a => 'a => 'a => 'a => 'a => 'a => 'a => 'b;