git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Map and fold
da9f74cPhil Freeman
libraries/prelude/prelude.js+11−7
@@ -13,8 +13,6 @@ function slice(s) { return function(e) { return function (l) { return l.slice(s,
13function sort(l) { var l1 = l.slice(); l.sort(); return l1; }
13function sort(l) { var l1 = l.slice(); l.sort(); return l1; }
14function splice(s) { return function(e) { return function(l1) { return function(l2) { return l2.splice(s, e, l1); }; }; }; }
14function splice(s) { return function(e) { return function(l1) { return function(l2) { return l2.splice(s, e, l1); }; }; }; }
15
15
16−// Strings
17−
18function lengthS(s) { return s.length; }
16function lengthS(s) { return s.length; }
19function charAt(i) { return function(s) { return s.charAt(i); }; }
17function charAt(i) { return function(s) { return s.charAt(i); }; }
20function indexOfS(s1) { return function(s2) { return s2.indexOf(s2); }; }
18function indexOfS(s1) { return function(s2) { return s2.indexOf(s2); }; }
@@ -29,16 +27,12 @@ function toLower(s) { return s.toLower(); }
29function toUpper(s) { return s.toUpper(); }
27function toUpper(s) { return s.toUpper(); }
30function trim(s) { return s.trim(); }
28function trim(s) { return s.trim(); }
31
29
32−// Regex
33−
34function regex(s1) { return function(s2) { return new Regex(s1, s2); }; };
30function regex(s1) { return function(s2) { return new Regex(s1, s2); }; };
35function test(r) { return function (s) { return r.test(s); }; };
31function test(r) { return function (s) { return r.test(s); }; };
36function match(r) { return function (s) { return s.match(r); }; };
32function match(r) { return function (s) { return s.match(r); }; };
37function replaceR(r) { return function(s1) { return function(s2) { return s2.replace(r, s1) }; }; }
33function replaceR(r) { return function(s1) { return function(s2) { return s2.replace(r, s1) }; }; }
38function search(r) { return function (s) { return s.search(r); }; };
34function search(r) { return function (s) { return s.search(r); }; };
39
35
40−// Globals
41−
42var nan = NaN;
36var nan = NaN;
43var infinity = Infinity;
37var infinity = Infinity;
44function toExponential(n) { return n.toExponential(); }
38function toExponential(n) { return n.toExponential(); }
@@ -46,5 +40,15 @@ function toFixed(d) { return function(n) { return n.toFixed(d); }; }
46function toPrecision(d) { return function(n) { return n.toPrecision(d); }; }
40function toPrecision(d) { return function(n) { return n.toPrecision(d); }; }
47function numberToString(n) { return n.toString(); }
41function numberToString(n) { return n.toString(); }
48
42
49−// Math
50var math = Math;
43var math = Math;
44+
45+function map(f) {
46+ return function(xs) {
47+ var ys = [];
48+ for (var i = 0; i < xs.length; i++) {
49+ ys[i] = f(xs[i]);
50+ }
51+ return ys;
52+ };
53+}
54+
libraries/prelude/prelude.ps+17
@@ -164,3 +164,20 @@ type Math =
164 }
164 }
165
165
166extern math :: Math
166extern math :: Math
167+
168+--
169+
170+extern map :: forall a b. (a -> b) -> [a] -> [b]
171+
172+foldr :: forall a b. (a -> b -> a) -> a -> [b] -> a
173+foldr = \f -> \a -> \bs -> case bs of
174+ [b:bs] -> f (foldr f a bs) b
175+ [] -> a
176+
177+foldl :: forall a b. (a -> b -> b) -> b -> [a] -> b
178+foldl = \f -> \b -> \as -> do
179+ var result = b
180+ foreach a in as:
181+ result = f a result
182+ return result
183+