Dec 09, 2005

Haskell風にJavaScriptを書く

ていうのをだいぶ前に作ったんだけど、コードがごちゃごちゃで何やってるか自分でもよくわかってなかったのでちょっと整理して公開。フィボナッチ数列を求めるのに大変便利です。

http://la.ma.la/misc/js/haskell/

関数の定義を記述すると、再帰処理でごにょごにょやって求めてくれる関数を生成します。メモ化もします。色々いじってたらなんとなく出来た。あんまり細かいツッコミされても困る。

実際のところJavaScriptは再帰処理をたくさんさせるとすぐにスタックオーバーフローで止まってしまうので使い物になりません。数を大きくすると即死したりするので注意が必要です。タイマーを使って再帰処理させるとかトリッキーなことをすれば回避することもできるのだけれど面倒くさい。

遅延評価っぽくなっていて、
// 代入はできる
test = ack(100,100); // アッカーマン関数(100,100)
// 評価すると死ぬ
alert(test) // Stack overflow

とか、そういう具合になります。
JavaScriptではtoStringやvalueOfというメソッドをいじる事で、実際にその値が使用されるまで演算を遅らせることが可能です、という記事をあとで書く。

----

今年はHaskellを覚えよう、などとは思っていたのだけれどインストールしただけで何もしてない。なんか本が出るそうなので言語マニアにならない程度には覚えていきたい。まあそのうち。

関数型言語の時代が来るよ。たぶん。
Posted at 09:50 | WriteBacks (1) | Edit
Edit this entry...

wikieditish message: Ready to edit this entry.
















A quick preview will be rendered here when you click "Preview" button.