5 function isBetween(lo,hi) { return function(chr) {
6 var c = chr.charCodeAt(0);
7 return lo <= c && c <= hi;
10 var isDigit = isBetween('0'.charCodeAt(0),'9'.charCodeAt(0));
11 var chk1 = isBetween('a'.charCodeAt(0),'f'.charCodeAt(0));
12 var chk2 = isBetween('A'.charCodeAt(0),'F'.charCodeAt(0));
14 return {fromCode : function(c) { return String.fromCharCode(c); },
15 toCode : function(c) { return c.charCodeAt(0); },
16 toUpper : function(c) { return c.toUpperCase(); },
17 toLower : function(c) { return c.toLowerCase(); },
18 toLocaleUpper : function(c) { return c.toLocaleUpperCase(); },
19 toLocaleLower : function(c) { return c.toLocaleLowerCase(); },
20 isLower : isBetween('a'.charCodeAt(0),'z'.charCodeAt(0)),
21 isUpper : isBetween('A'.charCodeAt(0),'Z'.charCodeAt(0)),
23 isOctDigit : isBetween('0'.charCodeAt(0),'7'.charCodeAt(0)),
24 isHexDigit : function(c) { return isDigit(c) || chk1(c) || chk2(c); }
28var Maybe = function() {
29 function consMaybe(x) { return function(xs) {
30 if (x[0] === "Just") return ["Cons", x[1], xs];
34 function fromMaybe(b) { return function(m) {
35 if (m[0] === "Just") return m[1];
39 function mapCons(f) { return function(y) { return function(xs) {
41 if (x[0] === "Just") return ["Cons", x[1], xs];
46 function maybe(b) { return function(f) { return function(m) {
47 if (m[0] === "Just") return f(m[1]);
53 return {Just : function(x) { return ["Just",x]; },
54 Nothing : ["Nothing"],
55 catMaybes : List.foldr(consMaybe)(["Nil"]),
56 isJust : function(m) { return m[0] === "Just"; },
57 isNothing : function(m) { return m[0] === "Nothing"; },
58 fromMaybe : fromMaybe,
59 consMaybe : consMaybe,
60 mapMaybe : function(f) { return List.foldr(mapCons(f))(["Nil"]); },
66var String = function() {
68 function append(s1) { return function(s2) {
72 function map(f) { return function(s) {
73 for (var i = s.length; i--; ) { s[i] = f(s[i]); }
77 function intercalate(sep) { return function(ss) {
78 return Value.listToArray(ss).join(sep);
81 function intersperse(sep) { return function(s) {
82 return s.split("").join(sep);
86 function foldl(f) { return function(b) { return function(s) {
88 for (var i = 0, len = s.length; i < len; ++i) { acc = f(s[i])(acc); }
93 function foldr(f) { return function(b) { return function(s) {
95 for (var i = s.length; i--; ) { acc = f(s[i])(acc); }
101 function concatMap(f) { return function(s) {
103 for (var i = a.length; i--; ) { a[i] = f(a[i]); }
108 function forall(pred) { return function(s) {
109 for (var i = s.length; i--; ) { if (!pred(s[i])) {return false}; }
113 function exists(pred) { return function(s) {
114 for (var i = s.length; i--; ) { if (pred(s[i])) {return true}; }
119 return {cons : append,
121 head : function(s) { return s[0]; },
122 last : function(s) { return s[s.length-1]; },
123 tail : function(s) { return s.slice(1); },
124 length : function(s) { return s.length; },
126 intercalate : intercalate,
127 intersperse : intersperse,
128 reverse : function(s) { return s.split("").reverse().join(""); },
129 toLower : function(s) { return s.toLowerCase(); },
130 toUpper : function(s) { return s.toUpperCase(); },
133 concat : function(ss) { return Value.listToArray(ss).join(""); },
134 concatMap : concatMap,
140 toText : Value.toText,
141 properEscape : Value.properEscape
145return {String: {toText:Value.toText, properEscape:Value.properEscape},
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list