Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1. //
  2. // curry
  3. //
  4. function curry2(fn) {
  5. return function (a) : (fn) {
  6. return function (b) : (fn, a) {
  7. return fn(a, b);
  8. }}
  9. }
  10.  
  11. function curry3(fn) {
  12. return function (a) : (fn) {
  13. return function (b) : (fn, a) {
  14. return function (c) : (fn, a, b) {
  15. return fn(a, b, c);
  16. }}}
  17. }
  18.  
  19. function curry4(fn) {
  20. return function (a) : (fn) {
  21. return function (b) : (fn, a) {
  22. return function (c) : (fn, a, b) {
  23. return function (d) : (fn, a, b, c) {
  24. return fn(a, b, c, d);
  25. }}}}
  26. }
  27.  
  28. function curry5(fn) {
  29. return function (a) : (fn) {
  30. return function (b) : (fn, a) {
  31. return function (c) : (fn, a, b) {
  32. return function (d) : (fn, a, b, c) {
  33. return function (e) : (fn, a, b, c, d) {
  34. return fn(a, b, c, d, e);
  35. }}}}}
  36. }
  37.  
  38. function curry6(fn) {
  39. return function (a) : (fn) {
  40. return function (b) : (fn, a) {
  41. return function (c) : (fn, a, b) {
  42. return function (d) : (fn, a, b, c) {
  43. return function (e) : (fn, a, b, c, d) {
  44. return function (f) : (fn, a, b, c, d, e) {
  45. return fn(a, b, c, d, e, f);
  46. }}}}}}
  47. }
  48.  
  49. function curry7(fn) {
  50. return function (a) : (fn) {
  51. return function (b) : (fn, a) {
  52. return function (c) : (fn, a, b) {
  53. return function (d) : (fn, a, b, c) {
  54. return function (e) : (fn, a, b, c, d) {
  55. return function (f) : (fn, a, b, c, d, e) {
  56. return function (g) : (fn, a, b, c, d, e, f) {
  57. return fn(a, b, c, d, e, f, g);
  58. }}}}}}}
  59. }
  60.  
  61. function curry8(fn) {
  62. return function (a) : (fn) {
  63. return function (b) : (fn, a) {
  64. return function (c) : (fn, a, b) {
  65. return function (d) : (fn, a, b, c) {
  66. return function (e) : (fn, a, b, c, d) {
  67. return function (f) : (fn, a, b, c, d, e) {
  68. return function (g) : (fn, a, b, c, d, e, f) {
  69. return function (h) : (fn, a, b, c, d, e, f, g) {
  70. return fn(a, b, c, d, e, f, g, h);
  71. }}}}}}}}
  72. }
  73.  
  74. function curry9(fn) {
  75. return function (a) : (fn) {
  76. return function (b) : (fn, a) {
  77. return function (c) : (fn, a, b) {
  78. return function (d) : (fn, a, b, c) {
  79. return function (e) : (fn, a, b, c, d) {
  80. return function (f) : (fn, a, b, c, d, e) {
  81. return function (g) : (fn, a, b, c, d, e, f) {
  82. return function (h) : (fn, a, b, c, d, e, f, g) {
  83. return function (i) : (fn, a, b, c, d, e, f, g, h) {
  84. return fn(a, b, c, d, e, f, g, h, i);
  85. }}}}}}}}}
  86. }
  87.  
  88. function curry10(fn) {
  89. return function (a) : (fn) {
  90. return function (b) : (fn, a) {
  91. return function (c) : (fn, a, b) {
  92. return function (d) : (fn, a, b, c) {
  93. return function (e) : (fn, a, b, c, d) {
  94. return function (f) : (fn, a, b, c, d, e) {
  95. return function (g) : (fn, a, b, c, d, e, f) {
  96. return function (h) : (fn, a, b, c, d, e, f, g) {
  97. return function (i) : (fn, a, b, c, d, e, f, g, h) {
  98. return function (j) : (fn, a, b, c, d, e, f, g, h, i) {
  99. return fn(a, b, c, d, e, f, g, h, i, j);
  100. }}}}}}}}}}
  101. }
  102.  
  103. function curry11(fn) {
  104. return function (a) : (fn) {
  105. return function (b) : (fn, a) {
  106. return function (c) : (fn, a, b) {
  107. return function (d) : (fn, a, b, c) {
  108. return function (e) : (fn, a, b, c, d) {
  109. return function (f) : (fn, a, b, c, d, e) {
  110. return function (g) : (fn, a, b, c, d, e, f) {
  111. return function (h) : (fn, a, b, c, d, e, f, g) {
  112. return function (i) : (fn, a, b, c, d, e, f, g, h) {
  113. return function (j) : (fn, a, b, c, d, e, f, g, h, i) {
  114. return function (k) : (fn, a, b, c, d, e, f, g, h, i, j) {
  115. return fn(a, b, c, d, e, f, g, h, i, j, k);
  116. }}}}}}}}}}}
  117. }
  118.  
  119. function curry12(fn) {
  120. return function (a) : (fn) {
  121. return function (b) : (fn, a) {
  122. return function (c) : (fn, a, b) {
  123. return function (d) : (fn, a, b, c) {
  124. return function (e) : (fn, a, b, c, d) {
  125. return function (f) : (fn, a, b, c, d, e) {
  126. return function (g) : (fn, a, b, c, d, e, f) {
  127. return function (h) : (fn, a, b, c, d, e, f, g) {
  128. return function (i) : (fn, a, b, c, d, e, f, g, h) {
  129. return function (j) : (fn, a, b, c, d, e, f, g, h, i) {
  130. return function (k) : (fn, a, b, c, d, e, f, g, h, i, j) {
  131. return function (l) : (fn, a, b, c, d, e, f, g, h, i, j, k) {
  132. return fn(a, b, c, d, e, f, g, h, i, j, k, l);
  133. }}}}}}}}}}}}
  134. }
  135.  
  136. function curry13(fn) {
  137. return function (a) : (fn) {
  138. return function (b) : (fn, a) {
  139. return function (c) : (fn, a, b) {
  140. return function (d) : (fn, a, b, c) {
  141. return function (e) : (fn, a, b, c, d) {
  142. return function (f) : (fn, a, b, c, d, e) {
  143. return function (g) : (fn, a, b, c, d, e, f) {
  144. return function (h) : (fn, a, b, c, d, e, f, g) {
  145. return function (i) : (fn, a, b, c, d, e, f, g, h) {
  146. return function (j) : (fn, a, b, c, d, e, f, g, h, i) {
  147. return function (k) : (fn, a, b, c, d, e, f, g, h, i, j) {
  148. return function (l) : (fn, a, b, c, d, e, f, g, h, i, j, k) {
  149. return function (m) : (fn, a, b, c, d, e, f, g, h, i, j, k, l) {
  150. return fn(a, b, c, d, e, f, g, h, i, j, k, l, m);
  151. }}}}}}}}}}}}}
  152. }
  153.  
  154.  
  155. //
  156. // uncurry
  157. //
  158. function uncurry(f) {
  159. return function (v, ...) : (f) {
  160. local r = f(v);
  161. for (local i = 0; i < vargc; ++i) {
  162. r = r(vargv[i]);
  163. }
  164. return r;
  165. }
  166. }
  167.  
  168.  
  169. //
  170. // flip
  171. //
  172. function flip(f) {
  173. return function (a) : (f) {
  174. return function (b) : (f, a) {
  175. return f(b)(a);
  176. }}
  177. }
  178.  
  179. // == uncurry(flip(curry2(f)))
  180. function flip1(f) {
  181. return function (a, b) : (f) {
  182. return f(b, a);
  183. }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement