@@ -32,6 +32,42 @@ Elm.Prelude = function() {
3232 };
3333
3434 var logBase=function(b){return function(x){return Math.log(x)/Math.log(b);};};
35+
36+ function readInt(str) {
37+ var s = JavaScript.castStringToJSString(str);
38+ var len = s.length;
39+ if (len === 0) { return Nothing; }
40+ var start = 0;
41+ if (s[0] == '-') {
42+ if (len === 1) { return Nothing; }
43+ start = 1;
44+ }
45+ for (var i = start; i < len; ++i) {
46+ if (!Char.isDigit(s[i])) { return Nothing; }
47+ }
48+ return Just(parseInt(s));
49+ }
50+
51+ function readFloat(str) {
52+ var s = JavaScript.castStringToJSString(str);
53+ var len = s.length;
54+ if (len === 0) { return Nothing; }
55+ var start = 0;
56+ if (s[0] == '-') {
57+ if (len === 1) { return Nothing; }
58+ start = 1;
59+ }
60+ var dotCount = 0;
61+ for (var i = start; i < len; ++i) {
62+ if (Char.isDigit(s[i])) { continue; }
63+ if (s[i] === '.') {
64+ dotCount += 1;
65+ if (dotCount <= 1) { continue; }
66+ }
67+ return Nothing;
68+ }
69+ return Just(parseFloat(s));
70+ }
3571
3672 return {eq : Value.eq,
3773 id : function(x) { return x; },
@@ -51,6 +87,8 @@ Elm.Prelude = function() {
5187 floor : function(n) { return Math.floor(n); },
5288 ceiling : function(n) { return Math.ceil(n); },
5389 truncate : function(n) { return ~~n; },
90+ readInt : readInt,
91+ readFloat : readFloat,
5492 sqrt : Math.sqrt,
5593 abs : Math.abs,
5694 pi : Math.PI,