Summation of a range based on predicates

Functional JavaScript for one of my posts: http://oli.me.uk/2013/07/02/ranges-summation-and-predicates/

by Oliver Caldwell

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>

JavaScript

var even = partialRight(_.filter, isEven);
var summation = partialRight(_.reduce, add);
var upTo = _.partial(_.range, 1);

var result = summation(even(upTo(11)));

function add(a, b) {
    return a + b;
}

function isEven(value) {
    return value % 2 === 0;
}

function partialRight(target) {
    var args = _.rest(arguments);
    
    return function () {
        return target.apply(null, _.toArray(arguments).concat(args));
    };
}

console.log(result);