gist

2012年3月24日土曜日

Valentineを使ってみる

Valentineは、型チェックや関数のイテレーション、ウォーターフォールやキュー、並列処理などの機能を提供するJavaScriptライブラリです。ScalaやHaskell、F#のような関数型言語っぽく記述することもできるそうです。

Valentineは、Matadorの開発者 ded 氏が開発し、Matadorでもも使われています。

npmでインストールします。

$ npm install valentine
npm http GET https://registry.npmjs.org/valentine
npm http 304 https://registry.npmjs.org/valentine
valentine@1.5.1 ./node_modules/valentine

まずはサンプルを CoffeeScript で書いてみます。

sample.coffee

v = require "valentine"

a = v(["a", "b", "c"]).map (letter) ->
  letter.toUpperCase()
.join " "

console.log a

文字a,b,cの配列map関数一文字ずつ大文字に変換してスペースで結合する」を繋げて書けます。

実行してみます。

$ coffee sample.coffee 
A B C

Valentineのwaterfallを使ってみます。

waterfall.coffee

v = require "valentine"

v.waterfall ((callback) ->
  callback null, "提案", "却下"
),((a, b, callback) ->
  console.log a
  console.log b
  callback null, "酒"
),((c, callback) ->
  console.log c
  callback null, "二日酔い"
), (err, result) ->
  console.log result

waterwallは上から順番に実行してくれます。次の関数へ引数とコールバックを投げることで次々と実行されます。

$ coffee waterfall.coffee 
提案
却下
酒
二日酔い

キュー実行の queue や並列実行の parallel もあり便利なライブラリです。Matadorでも使われていますので、覚えていて損はないと思います。

0 件のコメント: