We can factor the "filtering" part out of callIfPositive.

Results

function guard(fn, g) {
    return function(x) {
        return g(x) ? fn(x) : undefined;
    }
}
function callIfPositive(fn) { return guard(fn, function(x) { return x > 0; }); }
var logIfPositive = callIfPositive(log);
for (var i = -5; i < 5; i++) logIfPositive(i);