on fdaf8eb help sign in
elk/core-js/String.js
83 lines 2.1 kB history raw
2/*
3var String = function() {
5 function append(s1) { return function(s2) {
6 return s1.concat(s2);
7 };
8 }
9 function map(f) { return function(s) {
10 for (var i = s.length; i--; ) { s[i] = f(s[i]); }
11 };
12 }
14 function intercalate(sep) { return function(ss) {
15 return Value.listToArray(ss).join(sep);
16 };
17 }
18 function intersperse(sep) { return function(s) {
19 return s.split("").join(sep);
20 };
21 }
23 function foldl(f) { return function(b) { return function(s) {
24 var acc = b;
25 for (var i = 0, len = s.length; i < len; ++i) { acc = f(s[i])(acc); }
26 return acc;
27 };
28 };
29 }
30 function foldr(f) { return function(b) { return function(s) {
31 var acc = b;
32 for (var i = s.length; i--; ) { acc = f(s[i])(acc); }
33 return acc;
34 };
35 };
36 }
38 function concatMap(f) { return function(s) {
39 var a = s.split("");
40 for (var i = a.length; i--; ) { a[i] = f(a[i]); }
41 return a.join("");
42 };
43 }
45 function forall(pred) { return function(s) {
46 for (var i = s.length; i--; ) { if (!pred(s[i])) {return false}; }
47 return true;
48 };
49 }
50 function exists(pred) { return function(s) {
51 for (var i = s.length; i--; ) { if (pred(s[i])) {return true}; }
52 return false;
53 };
54 }
56 return {cons : append,
57 snoc : append,
58 head : function(s) { return s[0]; },
59 last : function(s) { return s[s.length-1]; },
60 tail : function(s) { return s.slice(1); },
61 length : function(s) { return s.length; },
62 map : map,
63 intercalate : intercalate,
64 intersperse : intersperse,
65 reverse : function(s) { return s.split("").reverse().join(""); },
66 toLower : function(s) { return s.toLowerCase(); },
67 toUpper : function(s) { return s.toUpperCase(); },
68 foldl : foldl,
69 foldr : foldr,
70 concat : function(ss) { return Value.listToArray(ss).join(""); },
71 concatMap : concatMap,
72 forall : forall,
73 exists : exists,
74 //filter : filter,
75 //take:,
76 //drop:,
77 toText : Value.toText,
78 properEscape : Value.properEscape
79 };
80}();
81*/
83var String = {toText:Value.toText, properEscape:Value.properEscape};