elm/core-js/Either.js

31 lines
877 B
JavaScript

Elm.Either = function() {
function Left(a1) { return ['Left',a1]; }
function Right(a1){ return ['Right',a1]; }
function either(f){ return function(g){ return function(e){
switch(e[0]){
case 'Left': return f(e[1]);
case 'Right': return g(e[1]);
}
};};}
function isLeft(e) { return e[0] == 'Left'; }
function isRight(e) { return e[0] == 'Right'; }
function get(es) { return Elm.List.map(function(x){return x[1];})(es); }
function lefts(es) { return get(Elm.List.filter(isLeft)(es)); }
function rights(es) { return get(Elm.List.filter(isRight)(es)); }
function partition(es) {
var lrs = Elm.List.partition(isLeft)(es);
lrs[1] = get(lrs[1]);
lrs[2] = get(lrs[2]);
return lrs;
}
return {Left:Left,
Right:Right,
either:either,
isLeft:isLeft,
isRight:isRight,
lefts:lefts,
rights:rights,
partition:partition};
}();