on d4e9599 help sign in
elk/builder/src/Generate/Functions.hs
93 lines 2.8 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
3{-# LANGUAGE QuasiQuotes #-}
4module Generate.Functions (functions) where
6import qualified Data.ByteString.Builder as BS
7import Text.RawString.QQ (r)
11-- FUNCTIONS
14functions :: BS.Builder
15functions = [r|
17function F(arity, fun, wrapper) {
18 wrapper.a = arity;
19 wrapper.f = fun;
20 return wrapper;
23function F2(fun) {
24 return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })
26function F3(fun) {
27 return F(3, fun, function(a) {
28 return function(b) { return function(c) { return fun(a, b, c); }; };
29 });
31function F4(fun) {
32 return F(4, fun, function(a) { return function(b) { return function(c) {
33 return function(d) { return fun(a, b, c, d); }; }; };
34 });
36function F5(fun) {
37 return F(5, fun, function(a) { return function(b) { return function(c) {
38 return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };
39 });
41function F6(fun) {
42 return F(6, fun, function(a) { return function(b) { return function(c) {
43 return function(d) { return function(e) { return function(f) {
44 return fun(a, b, c, d, e, f); }; }; }; }; };
45 });
47function F7(fun) {
48 return F(7, fun, function(a) { return function(b) { return function(c) {
49 return function(d) { return function(e) { return function(f) {
50 return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };
51 });
53function F8(fun) {
54 return F(8, fun, function(a) { return function(b) { return function(c) {
55 return function(d) { return function(e) { return function(f) {
56 return function(g) { return function(h) {
57 return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };
58 });
60function F9(fun) {
61 return F(9, fun, function(a) { return function(b) { return function(c) {
62 return function(d) { return function(e) { return function(f) {
63 return function(g) { return function(h) { return function(i) {
64 return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };
65 });
68function A2(fun, a, b) {
69 return fun.a === 2 ? fun.f(a, b) : fun(a)(b);
71function A3(fun, a, b, c) {
72 return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);
74function A4(fun, a, b, c, d) {
75 return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);
77function A5(fun, a, b, c, d, e) {
78 return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);
80function A6(fun, a, b, c, d, e, f) {
81 return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);
83function A7(fun, a, b, c, d, e, f, g) {
84 return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);
86function A8(fun, a, b, c, d, e, f, g, h) {
87 return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);
89function A9(fun, a, b, c, d, e, f, g, h, i) {
90 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);
93|]