Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var match = function (...vals) {
- return {
- when(...args) {
- var patterns = _(args).dropRight().take(vals.length);
- var values = _(vals).take(args.length-1);
- var satisfy = patterns
- .zip(values.value())
- .every(([p,v]) => p(v));
- if (satisfy) {
- this.result = _.last(args);
- this.when = function () { return this; }
- }
- return this;
- },
- done () {
- return this.result;
- },
- }
- }
- var m = function(n) { return (x => x > n) };
- var e = function(n) { return (x => x == n) };
- var t = match(0,1,2)
- .when(m(0), e(1), e(2), 'a')
- .when(e(0), e(1), 'b')
- .when(e(0), e(1), e(2), 'c')
- .done()
- console.log(t);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement