null object Design pattern

by dimitrs_papadimitriou

HTML

<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>

JavaScript

var some = (v) => ({
    map: (f) => some(f(v)), 
    matchWith: pattern => pattern.some(v),
});
var none = () => ({
    map: (f) => none(),
    matchWith: pattern => pattern.none(v),
});


some('Jim')
    .map(x => x.toUpperCase())
    .matchWith({
      some: value => {
        /*do your work here safely*/
        console.log(value)
      },
      none: () => {
        console.log("nothing")
        /*deal with Maybe.none cases here*/
      }
    });