pipe is more oriented on your known imperative style to process a value step by step

var composition = function(value){
value = c(value);
value = b(value);
value = a(value);
return value;
}
//pipe the value through c, then through b, then through a
var fn = pipe(c, b, a);
//wich in the end does exactly the same as the code built by compose