(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を読めば理解できるようになるので心配はいりません。好評発売中です。


おしまい。

EmptyHoxEmptyHox 2012/04/20 18:56 IronSchemeを始めようかと思っているのですが、
(というかLispもSchemeも使ったことがないのですが)
IronSchemeのどこらへんがうんこなのか教えていただけませんか。
気をつけるポイントにします!

NobuhisaNobuhisa 2012/04/24 15:37 IronSchemeの対話環境を使っている時に2度ほどブルースクリーンになりました。笑
どんな操作をした時か忘れてしまいましたが、コードのコピーか貼りつけをした時になったような・・・。
もう修正されているかもしれませんが、お気をつけて!

ちなみにSchemeの処理系ですと、RacketとかGaucheとかもありますね。
IronSchemeもR6RS準拠ですし、.NETも使えるので、良い処理系だと思いますよ。
WPFの操作とか試されてるんですね。お勉強頑張ってください!

EmptyHoxEmptyHox 2012/04/25 17:23 ありがとうございます
頑張ります!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Nobuhisa/20111210/p1