elm/core-js/Maybe.js

38 lines
1,007 B
JavaScript

var Elm = Elm || {};
Elm.Maybe = function() {
function consMaybe(x) { return function(xs) {
if (x[0] === "Just") return ["Cons", x[1], xs];
return xs;
};
}
function fromMaybe(b) { return function(m) {
if (m[0] === "Just") return m[1];
return b;
};
}
function mapCons(f) { return function(y) { return function(xs) {
var x = f(y);
if (x[0] === "Just") return ["Cons", x[1], xs];
return xs;
};
};
}
function maybe(b) { return function(f) { return function(m) {
if (m[0] === "Just") return f(m[1]);
return b;
};
};
}
return {Just : function(x) { return ["Just",x]; },
Nothing : ["Nothing"],
catMaybes : Elm.List.foldr(consMaybe)(["Nil"]),
isJust : function(m) { return m[0] === "Just"; },
isNothing : function(m) { return m[0] === "Nothing"; },
fromMaybe : fromMaybe,
consMaybe : consMaybe,
mapMaybe : function(f) { return Elm.List.foldr(mapCons(f))(["Nil"]); },
maybe : maybe
};
}();