mutate.js
function () {
        return function () {
          var args = Array.prototype.slice.call(arguments, 0);
          var sig = (function () {
            var ret = [];
            for (var i = 0, len = args.length; i < len; i++) {
              ret.push(toType(args[i]));
            }
            return ret;
          })().join('::');

          if (map[sig]) {
            if (map[sig].inject) args.unshift(input);
            return map[sig].fn.apply(ctx || null, args);
          }

          return input && input.apply(ctx || null, args);
        }
      }
function () {
        return function () {
          var args = Array.prototype.slice.call(arguments, 0);
          var sig = (function () {
            var ret = [];
            for (var i = 0, len = args.length; i < len; i++) {
              ret.push(toType(args[i]));
            }
            return ret;
          })().join('::');

          if (map[sig]) {
            if (map[sig].inject) args.unshift(input);
            return map[sig].fn.apply(ctx || null, args);
          }

          return input && input.apply(ctx || null, args);
        }
      }
function ( ) { return function ( ) { var args = Array . prototype . slice . call ( arguments , 0 ) ; var sig = ( function ( ) { var ret = [ ] ; for ( var i = 0 , len = args . length ; i < len ; i ++ ) { ret . push ( toType ( args [ i ] ) ) ; } return ret ; } ) ( ) . join ( '::' ) ; if ( map [ sig ] ) { if ( map [ sig ] . inject ) args . unshift ( input ) ; return map [ sig ] . fn . apply ( ctx || null , args ) ; } return input && input . apply ( ctx || null , args ) ; } }
return the composed new function
return the composed new function