nueで関数合成っぽいもの

underscore.jsには関数合成の機能があります。

var _ = require('underscore');

var greet = function(name){ return "hi: " + name; };
var exclaim = function(statement){ return statement + "!"; };
var welcome = _.compose(exclaim, greet);
console.log(welcome('moe'));

結果はこう。

hi: moe!


これは、、見ため的にnueのflowに似ている気がする。nueを使うと上のコードはこう書けます。

var flow = require('nue').flow;

var greet = function(name){ this.next("hi: " + name); };
var exclaim = function(statement){ this.next(statement + "!"); };
var welcome = flow(exclaim, greet);
flow(welcome, console.log)('moe');

結果はもちろんこう。

hi: moe!


結果をreturnしないのでまったく同じではないですが、nueは関数合成っぽい機能を持っているんだと今気づきました。なるほどねー。