I generally understand currying and how it uses closures:
function foo(a) { return function(b) { return function(c) { return a*b*c; }