(hatena (diary ’Nobuhisa)) このページをアンテナに追加 RSSフィード Twitter

11/12/10 : Have a bleis, Have a KitKat.

[]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
sample2 : 200

本来であればIronSchemeのスクリプトエンジンを用意して式をEvalしなくてはなりませんが、

LOPによって空間を分離し、面倒な部分一切を後ろの世界に隠蔽しています。


以下が実装の全容です。

オシャレな感じを出すために、Late Binding Operator Expressionsを使っています。


実用するためには他にも実装しなければならない点がありますが、

実用しないので問題ありません。


初心者の方には難しかったかもしれませんが、プログラミングの魔導書Vol.2を読めば理解できるようになるので心配はいりません。好評発売中です。


おしまい。