【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

Cyan/Yellow for Silverlight 3

id:takuto_hさんのCyanとYellowの移植をSilverlight 3に対応しました。動作確認とソースのダウンロードは以下です。

変更点は以下の通りです。

  • ドキュメントリストをListBoxからTreeViewに移行
  • リビルドするとListBoxのホイールスクロールがおかしくなっていたのを修正 (詳細は id:n7shi:20090724 を参照)

カリー化

改めてCyanをいじってみたのですが、関数の中身が表示されるため、カリー化の動きがとても分かり易いと思いました。

cyan> add=^(x):^(y):x+y
 => ^(x){ ^(y){ x.(+)(y) } }
cyan> inc=add(1)
 => ^(y){ x.(+)(y) }
cyan> inc(3)
 => 4

同じことをHaskell(GHCi)でやってみても素っ気ないです。

Prelude> let add = \x -> \y -> x + y
Prelude> let inc = add 1
Prelude> inc 3
4

これを見比べると、「λ」がCyanでは「^」、Haskellでは「\(本来はバックスラッシュ、Windowsでは文字コードの関係で円記号)」に見立てられているのがよく分かります。