code: function caseOf (/* ...args, matcher */) {
      var args = slice.call(arguments, 0, -1);
      var matcher = arguments[arguments.length - 1];
      var context = this === exports ? null : this;
    
      if (typeof matcher === "function") {
        if (!matcher.__matchChain) throw new Error("Not a matcher function");
        return matcher.apply(context, args);
      }
    
      return pattern(matcher).apply(context, args);
    }
docs: Sugar for creating a new pattern and immediately invoking it with arguments. This just lets you put the arguments first instead of after the patterns.