git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Map and fold
commitda9f74c6a34f63ad0cccc2ade5fe264080e93933 authorPhil Freeman <paf31@cantab.net> dateThu 31 Oct 2013, 20:08 (13 years ago) parent6970c35
2 files changed+28−7
libraries/prelude/prelude.js+11−7 libraries/prelude/prelude.ps+17
libraries/prelude/prelude.js+11−7
@@ -13,8 +13,6 @@ function slice(s) { return function(e) { return function (l) { return l.slice(s,
1313function sort(l) { var l1 = l.slice(); l.sort(); return l1; }
1414function splice(s) { return function(e) { return function(l1) { return function(l2) { return l2.splice(s, e, l1); }; }; }; }
1515
16−// Strings
17−
1816function lengthS(s) { return s.length; }
1917function charAt(i) { return function(s) { return s.charAt(i); }; }
2018function indexOfS(s1) { return function(s2) { return s2.indexOf(s2); }; }
@@ -29,16 +27,12 @@ function toLower(s) { return s.toLower(); }
2927function toUpper(s) { return s.toUpper(); }
3028function trim(s) { return s.trim(); }
3129
32−// Regex
33−
3430function regex(s1) { return function(s2) { return new Regex(s1, s2); }; };
3531function test(r) { return function (s) { return r.test(s); }; };
3632function match(r) { return function (s) { return s.match(r); }; };
3733function replaceR(r) { return function(s1) { return function(s2) { return s2.replace(r, s1) }; }; }
3834function search(r) { return function (s) { return s.search(r); }; };
3935
40−// Globals
41−
4236var nan = NaN;
4337var infinity = Infinity;
4438function toExponential(n) { return n.toExponential(); }
@@ -46,5 +40,15 @@ function toFixed(d) { return function(n) { return n.toFixed(d); }; }
4640function toPrecision(d) { return function(n) { return n.toPrecision(d); }; }
4741function numberToString(n) { return n.toString(); }
4842
49−// Math
5043var 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 =
164164 }
165165
166166extern 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+