on master help sign in
Fill in some of Prelude.js
commit3746c3217add2e84143466bc3b9f60ba4d5eee5c authorevancz <info@elm-lang.org> dateSat 16 Mar 2013, 02:02 (14 years ago) parent202aace
1 file changed+109−3
libraries/Native/Prelude.js+109−3
libraries/Native/Prelude.js+109−3
@@ -1,7 +1,113 @@
11
22Elm.Prelude = function(elm) {
3− 'use strict';
4− if (elm.Prelude) return elm.Prelude;
3+ 'use strict';
4+ if (elm.Prelude) return elm.Prelude;
55
6− return elm.Prelude = {};
6+ var JS = Elm.JavaScript(elm);
7+ var Maybe = Elm.Maybe(elm);
8+ var Utils = Elm.Native.Utils(elm);
9+
10+ function div(a,b) { return (a/b)|0 }
11+ function rem(a,b) { return a % b }
12+ function mod(a,b) {
13+ var r = a % b;
14+ var m = a === 0 ? 0 : (b > 0 ? (a >= 0 ? r : r+b) : -mod(-a,-b));
15+ return m === b ? 0 : m;
16+ }
17+ function abs(x) { return x < 0 ? -x : x }
18+ function logBase(base,n) { return Math.log(n) / Math.log(base) }
19+ function min(a,b) { return a < b ? a : b }
20+ function max(a,b) { return a > b ? a : b }
21+ function clamp(lo,hi,n) { return n < lo ? lo : n > hi ? hi : n }
22+ function xor(a,b) { return a !== b }
23+ function not(b) { return !b }
24+
25+ function truncate(n) { return n|0 }
26+
27+ function id(n) { return n }
28+ function flip(f,a,b) { return A2(f,b,a) }
29+ function curry(f,v) { return A2(f,v._0,v._1) }
30+ function uncurry(f,a,b) { return f(Utils.Tuple2(a,b)) }
31+ function fst(t) { return t._0 }
32+ function snd(t) { return t._1 }
33+
34+ function readInt(str) {
35+ var s = JS.fromString(str);
36+ var len = s.length;
37+ if (len === 0) { return Maybe.Nothing }
38+ var start = 0;
39+ if (s[0] == '-') {
40+ if (len === 1) { return Maybe.Nothing }
41+ start = 1;
42+ }
43+ for (var i = start; i < len; ++i) {
44+ if (!Elm.Char.isDigit(s[i])) { return Maybe.Nothing }
45+ }
46+ return Maybe.Just(parseInt(s));
47+ }
48+
49+ function readFloat(str) {
50+ var s = JS.fromString(str);
51+ var len = s.length;
52+ if (len === 0) { return Maybe.Nothing; }
53+ var start = 0;
54+ if (s[0] == '-') {
55+ if (len === 1) { return Maybe.Nothing; }
56+ start = 1;
57+ }
58+ var dotCount = 0;
59+ for (var i = start; i < len; ++i) {
60+ if (Elm.Char.isDigit(s[i])) { continue; }
61+ if (s[i] === '.') {
62+ dotCount += 1;
63+ if (dotCount <= 1) { continue; }
64+ }
65+ return Maybe.Nothing;
66+ }
67+ return Maybe.Just(parseFloat(s));
68+ }
69+
70+ return elm.Prelude = {
71+ div:F2(div),
72+ rem:F2(rem),
73+ mod:F2(mod),
74+
75+ pi:Math.pi,
76+ e:Math.e,
77+ cos:Math.cos,
78+ sin:Math.sin,
79+ tan:Math.tan,
80+ acos:Math.acos,
81+ asin:Math.asin,
82+ atan:Math.atan,
83+ atan2:F2(Math.atan2),
84+
85+ sqrt:Math.sqrt,
86+ abs:abs,
87+ logBase:F2(logBase),
88+ min:F2(min),
89+ max:F2(max),
90+ clamp:F3(clamp),
91+
92+
93+ xor:F2(xor),
94+ not:not,
95+ otherwise:true,
96+
97+ truncate:truncate,
98+ ceiling:Math.ceil,
99+ floor:Math.floor,
100+ round:Math.round,
101+ toFloat:id,
102+
103+ readInt:readInt,
104+ readFloat:readFloat,
105+
106+ id:id,
107+ flip:F3(flip),
108+ curry:F2(curry),
109+ uncurry:F3(uncurry),
110+ fst:fst,
111+ snd:snd
112+ };
7113};