on f609efa help sign in
elk/builder/src/Generate/Functions.hs
92 lines 2.8 kB history raw
1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE QuasiQuotes #-}
3module Generate.Functions (functions) where
5import qualified Data.ByteString.Builder as B
6import Text.RawString.QQ (r)
10-- FUNCTIONS
13functions :: B.Builder
14functions = [r|
16function F(arity, fun, wrapper) {
17 wrapper.a = arity;
18 wrapper.f = fun;
19 return wrapper;
22function F2(fun) {
23 return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })
25function F3(fun) {
26 return F(3, fun, function(a) {
27 return function(b) { return function(c) { return fun(a, b, c); }; };
28 });
30function F4(fun) {
31 return F(4, fun, function(a) { return function(b) { return function(c) {
32 return function(d) { return fun(a, b, c, d); }; }; };
33 });
35function F5(fun) {
36 return F(5, fun, function(a) { return function(b) { return function(c) {
37 return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };
38 });
40function F6(fun) {
41 return F(6, fun, function(a) { return function(b) { return function(c) {
42 return function(d) { return function(e) { return function(f) {
43 return fun(a, b, c, d, e, f); }; }; }; }; };
44 });
46function F7(fun) {
47 return F(7, fun, function(a) { return function(b) { return function(c) {
48 return function(d) { return function(e) { return function(f) {
49 return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };
50 });
52function F8(fun) {
53 return F(8, fun, function(a) { return function(b) { return function(c) {
54 return function(d) { return function(e) { return function(f) {
55 return function(g) { return function(h) {
56 return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };
57 });
59function F9(fun) {
60 return F(9, fun, function(a) { return function(b) { return function(c) {
61 return function(d) { return function(e) { return function(f) {
62 return function(g) { return function(h) { return function(i) {
63 return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };
64 });
67function A2(fun, a, b) {
68 return fun.a === 2 ? fun.f(a, b) : fun(a)(b);
70function A3(fun, a, b, c) {
71 return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);
73function A4(fun, a, b, c, d) {
74 return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);
76function A5(fun, a, b, c, d, e) {
77 return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);
79function A6(fun, a, b, c, d, e, f) {
80 return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);
82function A7(fun, a, b, c, d, e, f, g) {
83 return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);
85function A8(fun, a, b, c, d, e, f, g, h) {
86 return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);
88function A9(fun, a, b, c, d, e, f, g, h, i) {
89 return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);
92|]