on master help sign in
Convert the List and Misc modules.
commit0fe301aaba186d60fe45415ae0ee64e7ee89eef2 authorevancz <info@elm-lang.org> dateFri 8 Mar 2013, 23:31 (14 years ago) parent8e6dbf8
3 files changed+34−39
libraries/Native/Function.js−3 libraries/Native/List.js+18−10 libraries/Native/Misc.js+16−26
libraries/Native/Function.js−3
@@ -1,6 +1,3 @@
1−/*
2−module Native.Function where
3−*/
41
52function F2(fun) {
63 function wrapper(a) { return function(b) { return fun(a,b) } }
libraries/Native/List.js+18−10
@@ -1,12 +1,10 @@
1−/**
2−module Native.List where
31
4−import Native.Function
5−**/
6−
7−(function() {
2+Elm.Native.List = function(elm) {
83 "use strict";
94
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.List) return elm.Native.List;
7+
108 var Nil = { ctor:'Nil' };
119 function Cons(hd,tl) { return { ctor:"Cons", _0:hd, _1:tl }; }
1210
@@ -42,11 +40,11 @@ import Native.Function
4240 function append(xs,ys) {
4341 if (typeof xs === "string") { return xs.concat(ys); }
4442 if (xs.ctor === "Nil") { return ys; }
45− var root = Elm.Native.List.Cons(xs._0. Elm.Native.List.Nil);
43+ var root = Cons(xs._0. Nil);
4644 var curr = root;
4745 xs = xs._1;
4846 while (xs.ctor==="Cons") {
49− curr._1 = Elm.Native.List.Cons(xs._0. Elm.Native.List.Nil);
47+ curr._1 = Cons(xs._0. Nil);
5048 xs = xs._1;
5149 curr = curr._1;
5250 }
@@ -140,6 +138,15 @@ import Native.Function
140138 return out;
141139 }
142140
141+ function member(x, xs) {
142+ var out = 0;
143+ while (xs.ctor === "Cons") {
144+ if (Misc.eq(x,xs._0)) return true;
145+ xs = xs._1;
146+ }
147+ return false;
148+ }
149+
143150 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
144151
145152 function all(pred, xs) {
@@ -200,7 +207,7 @@ import Native.Function
200207 return xs;
201208 }
202209
203− Elm.Native.List = {
210+ return elm.Native.List = {
204211 Nil:Nil,
205212 Cons:Cons,
206213 toArray:toArray,
@@ -222,6 +229,7 @@ import Native.Function
222229 scanl1:F2(scanl1),
223230 filter:F2(filter),
224231 length:length,
232+ member:member,
225233 reverse:reverse,
226234
227235 all:F2(all),
@@ -233,4 +241,4 @@ import Native.Function
233241 drop:F2(drop)
234242 };
235243
236−}());
244+};
libraries/Native/Misc.js+16−26
@@ -1,17 +1,14 @@
11
2−/*
3−module Native.Misc where
4−
5−import List
6−import Maybe
7−import JavaScript
8−import Dict
9−import JSON
10−*/
11−
12−(function(){
2+Elm.Native.Misc = function(elm) {
133 'use strict';
144
5+ var NativeList = Elm.Native.List(elm);
6+ var List = Elm.List(elm);
7+ var Maybe = Elm.Maybe(elm);
8+ var JS = Elm.JavaScript(elm);
9+ var Dict = Elm.Dict(elm);
10+ var Json = Elm.Json(elm);
11+
1512 function eq(x,y) {
1613 if (x === y) return true;
1714 if (typeof x === "object") {
@@ -86,7 +83,7 @@ import JSON
8683
8784
8885 function groupForms(forms) {
89− forms = Elm.JavaScript.castListToJSArray(forms);
86+ forms = JS.fromList(forms);
9087 var groups = [];
9188 var arr = [];
9289 for (var i = forms.length; i--; ) {
@@ -151,14 +148,14 @@ import JSON
151148 } else if (v.ctor === "Nil") {
152149 return "[]";
153150 } else if (v.ctor === "JSON") {
154− return "(JSON.fromList " + toString(Elm.JSON.toList(v)) + ")";
151+ return "(JSON.fromList " + toString(Json.toList(v)) + ")";
155152 } else if (v.ctor === "RBNode" || v.ctor === "RBEmpty") {
156− function cons(k){ return function(v) { return function(acc) { return Elm.Native.List.Cons(Tuple2(k,v),acc); }; }; }
157− var list = Elm.Dict.foldr(cons)(Elm.Native.List.Nil)(v);
153+ function cons(k){ return function(v) { return function(acc) { return NativeList.Cons(Tuple2(k,v),acc); }; }; }
154+ var list = Dict.foldr(cons)(NativeList.Nil)(v);
158155 var name = "Dict";
159156 if (list.ctor === "Cons" && list._0._1.ctor === "Tuple0") {
160157 name = "Set";
161− list = Elm.List.map(function(x) { return x._0; })(list);
158+ list = A2(List.map, function(x){return x._0}, list);
162159 }
163160 return "(" + name + ".fromList " + toString(list) + ")";
164161 } else {
@@ -170,15 +167,8 @@ import JSON
170167 }
171168 return v+"";
172169 };
173− var show = function(v) { return Elm.Native.List.fromArray(toString(v)); };
170+ var show = function(v) { return NativeList.fromArray(toString(v)); };
174171
175− /*
176− function wrap(elem) {
177− var p = Value.getSize(elem);
178− return ['Element', Guid.guid(), ["EHtml",elem],
179− p.ctor, p._0, 1, Elm.Maybe.Nothing, Elm.Maybe.Nothing];
180− }
181− */
182172 var addListener = function() {
183173 if(document.addEventListener) {
184174 return function(element, event, handler) {
@@ -191,7 +181,7 @@ import JSON
191181 }
192182 }();
193183
194− Elm.Native.Misc = {
184+ elm.Native.Misc = {
195185 eq:eq,
196186 show:show,
197187 Tuple0:Tuple0,
@@ -203,4 +193,4 @@ import JSON
203193 groupForms : groupForms,
204194 addListener : addListener
205195 };
206−}());
196+};