1
1
2
- (* Copyright (C) 2015-2016 Bloomberg Finance L.P.
2
+ (* Copyright (C) 2015 - Authors of BuckleScript
3
3
*
4
4
* This program is free software: you can redistribute it and/or modify
5
5
* it under the terms of the GNU Lesser General Public License as published by
23
23
* along with this program; if not, write to the Free Software
24
24
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
25
25
26
-
27
- (* * *)
28
-
29
26
(* * Generated by scripts/curry_gen.ml *)
30
27
external function_length : 'a -> int = " #function_length"
31
28
external apply_args : ('a -> 'b ) -> _ array -> 'b = " #apply"
32
29
external sub : 'a array -> int -> int -> 'a array = " caml_array_sub"
33
30
31
+ (* * Public *)
34
32
let rec app f args =
35
33
let arity = function_length f in
36
- let arity = if arity = 0 then 1 else arity in (* TOOD: optimize later *)
37
34
let len = Array. length args in
38
35
let d = arity - len in
39
36
if d = 0 then
@@ -46,18 +43,26 @@ let rec app f args =
46
43
Obj. magic (fun x -> app f (Caml_array. append args [|x|] ))
47
44
48
45
46
+ (* Internal use *)
49
47
external apply1 : ('a0 -> 'a1 ) -> 'a0 -> 'a1 = " #apply1"
48
+ (* Internal use *)
50
49
external apply2 : ('a0 -> 'a1 -> 'a2 ) -> 'a0 -> 'a1 -> 'a2 = " #apply2"
50
+ (* Internal use *)
51
51
external apply3 : ('a0 -> 'a1 -> 'a2 -> 'a3 ) -> 'a0 -> 'a1 -> 'a2 -> 'a3 = " #apply3"
52
+ (* Internal use *)
52
53
external apply4 : ('a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 ) -> 'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 = " #apply4"
54
+ (* Internal use *)
53
55
external apply5 : ('a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 ) -> 'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 = " #apply5"
56
+ (* Internal use *)
54
57
external apply6 : ('a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 ) -> 'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 = " #apply6"
58
+ (* Internal use *)
55
59
external apply7 : ('a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 ) -> 'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 = " #apply7"
60
+ (* Internal use *)
56
61
external apply8 : ('a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> 'a8 ) -> 'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> 'a8 = " #apply8"
57
62
63
+ (* Intenral use *)
58
64
let curry_1 o a0 arity =
59
65
match arity with
60
- | 0 -> apply1 (Obj. magic o) a0
61
66
| 1 -> apply1 (Obj. magic o) a0
62
67
| 2 -> apply2 (Obj. magic o) a0
63
68
| 3 -> apply3 (Obj. magic o) a0
@@ -67,20 +72,21 @@ let curry_1 o a0 arity =
67
72
| 7 -> apply7 (Obj. magic o) a0
68
73
| _ -> Obj. magic (app o [|a0|])
69
74
75
+ (* * Public *)
70
76
let _1 o a0 =
71
77
let arity = function_length o in
72
78
if arity = 1 then apply1 o a0
73
79
else curry_1 o a0 arity
74
-
80
+ (* * Public *)
75
81
let __1 o =
76
82
let arity = function_length o in
77
83
if arity = 1 then o
78
84
else fun a0 -> _1 o a0
79
85
80
86
87
+ (* Intenral use *)
81
88
let curry_2 o a0 a1 arity =
82
89
match arity with
83
- | 0 -> app (apply1 (Obj. magic o) a0) [|a1|]
84
90
| 1 -> app (apply1 (Obj. magic o) a0) [|a1|]
85
91
| 2 -> apply2 (Obj. magic o) a0 a1
86
92
| 3 -> apply3 (Obj. magic o) a0 a1
@@ -90,20 +96,21 @@ let curry_2 o a0 a1 arity =
90
96
| 7 -> apply7 (Obj. magic o) a0 a1
91
97
| _ -> Obj. magic (app o [|a0;a1|])
92
98
99
+ (* * Public *)
93
100
let _2 o a0 a1 =
94
101
let arity = function_length o in
95
102
if arity = 2 then apply2 o a0 a1
96
103
else curry_2 o a0 a1 arity
97
-
104
+ (* * Public *)
98
105
let __2 o =
99
106
let arity = function_length o in
100
107
if arity = 2 then o
101
108
else fun a0 a1 -> _2 o a0 a1
102
109
103
110
111
+ (* Intenral use *)
104
112
let curry_3 o a0 a1 a2 arity =
105
113
match arity with
106
- | 0 -> app (apply1 (Obj. magic o) a0) [|a1;a2|]
107
114
| 1 -> app (apply1 (Obj. magic o) a0) [|a1;a2|]
108
115
| 2 -> app (apply2 (Obj. magic o) a0 a1) [|a2|]
109
116
| 3 -> apply3 (Obj. magic o) a0 a1 a2
@@ -113,20 +120,21 @@ let curry_3 o a0 a1 a2 arity =
113
120
| 7 -> apply7 (Obj. magic o) a0 a1 a2
114
121
| _ -> Obj. magic (app o [|a0;a1;a2|])
115
122
123
+ (* * Public *)
116
124
let _3 o a0 a1 a2 =
117
125
let arity = function_length o in
118
126
if arity = 3 then apply3 o a0 a1 a2
119
127
else curry_3 o a0 a1 a2 arity
120
-
128
+ (* * Public *)
121
129
let __3 o =
122
130
let arity = function_length o in
123
131
if arity = 3 then o
124
132
else fun a0 a1 a2 -> _3 o a0 a1 a2
125
133
126
134
135
+ (* Intenral use *)
127
136
let curry_4 o a0 a1 a2 a3 arity =
128
137
match arity with
129
- | 0 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3|]
130
138
| 1 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3|]
131
139
| 2 -> app (apply2 (Obj. magic o) a0 a1) [|a2;a3|]
132
140
| 3 -> app (apply3 (Obj. magic o) a0 a1 a2) [|a3|]
@@ -136,20 +144,21 @@ let curry_4 o a0 a1 a2 a3 arity =
136
144
| 7 -> apply7 (Obj. magic o) a0 a1 a2 a3
137
145
| _ -> Obj. magic (app o [|a0;a1;a2;a3|])
138
146
147
+ (* * Public *)
139
148
let _4 o a0 a1 a2 a3 =
140
149
let arity = function_length o in
141
150
if arity = 4 then apply4 o a0 a1 a2 a3
142
151
else curry_4 o a0 a1 a2 a3 arity
143
-
152
+ (* * Public *)
144
153
let __4 o =
145
154
let arity = function_length o in
146
155
if arity = 4 then o
147
156
else fun a0 a1 a2 a3 -> _4 o a0 a1 a2 a3
148
157
149
158
159
+ (* Intenral use *)
150
160
let curry_5 o a0 a1 a2 a3 a4 arity =
151
161
match arity with
152
- | 0 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4|]
153
162
| 1 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4|]
154
163
| 2 -> app (apply2 (Obj. magic o) a0 a1) [|a2;a3;a4|]
155
164
| 3 -> app (apply3 (Obj. magic o) a0 a1 a2) [|a3;a4|]
@@ -159,20 +168,21 @@ let curry_5 o a0 a1 a2 a3 a4 arity =
159
168
| 7 -> apply7 (Obj. magic o) a0 a1 a2 a3 a4
160
169
| _ -> Obj. magic (app o [|a0;a1;a2;a3;a4|])
161
170
171
+ (* * Public *)
162
172
let _5 o a0 a1 a2 a3 a4 =
163
173
let arity = function_length o in
164
174
if arity = 5 then apply5 o a0 a1 a2 a3 a4
165
175
else curry_5 o a0 a1 a2 a3 a4 arity
166
-
176
+ (* * Public *)
167
177
let __5 o =
168
178
let arity = function_length o in
169
179
if arity = 5 then o
170
180
else fun a0 a1 a2 a3 a4 -> _5 o a0 a1 a2 a3 a4
171
181
172
182
183
+ (* Intenral use *)
173
184
let curry_6 o a0 a1 a2 a3 a4 a5 arity =
174
185
match arity with
175
- | 0 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4;a5|]
176
186
| 1 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4;a5|]
177
187
| 2 -> app (apply2 (Obj. magic o) a0 a1) [|a2;a3;a4;a5|]
178
188
| 3 -> app (apply3 (Obj. magic o) a0 a1 a2) [|a3;a4;a5|]
@@ -182,20 +192,21 @@ let curry_6 o a0 a1 a2 a3 a4 a5 arity =
182
192
| 7 -> apply7 (Obj. magic o) a0 a1 a2 a3 a4 a5
183
193
| _ -> Obj. magic (app o [|a0;a1;a2;a3;a4;a5|])
184
194
195
+ (* * Public *)
185
196
let _6 o a0 a1 a2 a3 a4 a5 =
186
197
let arity = function_length o in
187
198
if arity = 6 then apply6 o a0 a1 a2 a3 a4 a5
188
199
else curry_6 o a0 a1 a2 a3 a4 a5 arity
189
-
200
+ (* * Public *)
190
201
let __6 o =
191
202
let arity = function_length o in
192
203
if arity = 6 then o
193
204
else fun a0 a1 a2 a3 a4 a5 -> _6 o a0 a1 a2 a3 a4 a5
194
205
195
206
207
+ (* Intenral use *)
196
208
let curry_7 o a0 a1 a2 a3 a4 a5 a6 arity =
197
209
match arity with
198
- | 0 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4;a5;a6|]
199
210
| 1 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4;a5;a6|]
200
211
| 2 -> app (apply2 (Obj. magic o) a0 a1) [|a2;a3;a4;a5;a6|]
201
212
| 3 -> app (apply3 (Obj. magic o) a0 a1 a2) [|a3;a4;a5;a6|]
@@ -205,20 +216,21 @@ let curry_7 o a0 a1 a2 a3 a4 a5 a6 arity =
205
216
| 7 -> apply7 (Obj. magic o) a0 a1 a2 a3 a4 a5 a6
206
217
| _ -> Obj. magic (app o [|a0;a1;a2;a3;a4;a5;a6|])
207
218
219
+ (* * Public *)
208
220
let _7 o a0 a1 a2 a3 a4 a5 a6 =
209
221
let arity = function_length o in
210
222
if arity = 7 then apply7 o a0 a1 a2 a3 a4 a5 a6
211
223
else curry_7 o a0 a1 a2 a3 a4 a5 a6 arity
212
-
224
+ (* * Public *)
213
225
let __7 o =
214
226
let arity = function_length o in
215
227
if arity = 7 then o
216
228
else fun a0 a1 a2 a3 a4 a5 a6 -> _7 o a0 a1 a2 a3 a4 a5 a6
217
229
218
230
231
+ (* Intenral use *)
219
232
let curry_8 o a0 a1 a2 a3 a4 a5 a6 a7 arity =
220
233
match arity with
221
- | 0 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4;a5;a6;a7|]
222
234
| 1 -> app (apply1 (Obj. magic o) a0) [|a1;a2;a3;a4;a5;a6;a7|]
223
235
| 2 -> app (apply2 (Obj. magic o) a0 a1) [|a2;a3;a4;a5;a6;a7|]
224
236
| 3 -> app (apply3 (Obj. magic o) a0 a1 a2) [|a3;a4;a5;a6;a7|]
@@ -228,11 +240,12 @@ let curry_8 o a0 a1 a2 a3 a4 a5 a6 a7 arity =
228
240
| 7 -> app (apply7 (Obj. magic o) a0 a1 a2 a3 a4 a5 a6) [|a7|]
229
241
| _ -> Obj. magic (app o [|a0;a1;a2;a3;a4;a5;a6;a7|])
230
242
243
+ (* * Public *)
231
244
let _8 o a0 a1 a2 a3 a4 a5 a6 a7 =
232
245
let arity = function_length o in
233
246
if arity = 8 then apply8 o a0 a1 a2 a3 a4 a5 a6 a7
234
247
else curry_8 o a0 a1 a2 a3 a4 a5 a6 a7 arity
235
-
248
+ (* * Public *)
236
249
let __8 o =
237
250
let arity = function_length o in
238
251
if arity = 8 then o
0 commit comments