code: function(direction) {
      var binder = direction == L.L ? bindLeft : bindRight;
  
      return function(fun, count) {
        if( count === void 0 ) {
          // if no count was provided, parse the function to count arguments
          count = fun.length;
        }
        if( count === 0 ) {
          // if there are no more arguments to apply, return the value.
          return fun();
        }
        return function(arg) {
          return L.curry(binder(fun, arg), count-1);
        };
      };
    }
docs: Returns a function which will curry a function either right to left or left to right.  *signature:* `Number -> ((any* -> a) -> Number -> (any* -> a))`