IronSchemeは生きている F#の中に
F# Advent Calendar 2011の参加エントリです。
言語指向プログラミング(LOP)をサポートする機能として、
F#にはアクティブパターンやコンピューテーション式と言ったものがあります。
今日は後者のコンピューテーション式を使ってF#にSchemeを組み込んでみたいと思います。
DLR上で動作するIronSchemeという処理系があります(何気にR6RS準拠)。
うんこな側面もいくつかありますが、個人的には期待しています。でも少しうんこです。
こいつを利用します。ここでは最新版の1.0 RC5を使いました。
プログラム
サンプルプログラムはbitbucketに置いてあります。
http://bitbucket.org/Nobuhisa/f-advent-calendar-2011/src
実行には.NET 4以上が必要です。そのため、mono環境では動作しません(多分)。
テストコードもおまけで付いています。Onigiri便利です。←
まずは定義されたコンピューテーション式を利用してみます。
sample1 : 1024本来であればIronSchemeのスクリプトエンジンを用意して式をEvalしなくてはなりませんが、
sample2 : 200
LOPによって空間を分離し、面倒な部分一切を後ろの世界に隠蔽しています。
以下が実装の全容です。
オシャレな感じを出すために、Late Binding Operator Expressionsを使っています。
実用するためには他にも実装しなければならない点がありますが、
実用しないので問題ありません。
初心者の方には難しかったかもしれませんが、プログラミングの魔導書Vol.2を読めば理解できるようになるので心配はいりません。好評発売中です。
おしまい。