- xhl_kogitsune
- 14767
- 15
- 21
- 4
Scalaのtailrecアノテーションは末尾再帰になってなかったらコンパイルエラーだった > http://t.co/MRNOKFL7
2012-03-28 13:37:14。oO(これまで幾たびも狐さんを養殖する計画はあった。しかし不思議なことに……養殖されて増えた量以上に天然の狐さんが消えていき……人々は徒労をやめた。
2012-03-28 13:48:40俺の夢は、狐さんに狸の着ぐるみをつけさせて、闘技場に放り込み、捕虜のきゅっちゃん団長がそれと知らずに仕留めてしまったあと、部下の狐旅団の将兵達にそのさまを見せつけて「これがお前達の指揮官だ!」って高らかに笑う。きゅっちゃんは狐さんの亡骸を抱きしめたまま動かない。
2012-03-28 13:49:05@repeatedly @kis 2000年前後のJITの論文で読んだような。ただ、末尾再帰除去入れてもStackOverflowError投げられないと動きが変わるのでめんどくさかった記憶が
2012-03-28 14:14:32JVM上に関数型言語作ると末尾再帰が最適化されないが、Clojureではloop recurを用いてそれを明示的に指定して行わせることができる。
2012-03-28 14:34:55そういえば、Java VM Spec 1st ed.の15.11.4.6 http://t.co/veHJtU4i にはtail call optimization可能な記述がありますが、この節は2nd ed.で削除されています #JVM上に関数型言語を作ると末尾再帰が
2012-03-28 14:40:07JVM上に関数型言語作ると末尾再帰が...、なのでClojureのloopとかtrampolineとかは結構面白すごいコードになって一頻り笑ったあげく、涙で袖をぬらす
2012-03-28 14:41:00JVM上に関数型言語作ると末尾再帰が普通の方法では最適化出来ない訳ですけど、どうせトレーダーは再帰的な関数を書かないので金融にかわ言語としてはそもそも再帰自体必須では無い、と言うことが CUFP 2011 で Lさんが発表されていますね、しかし実際私が再帰を使ってスタックを食い尽
2012-03-28 14:41:27古い論文等では盛んにこの節が引用されて「JVMが末尾再帰最適化してくれるヨー」と書かれています。たぶん何かの議論があって15.11.4.6は削除に至ったのではと思っているのですが詳しい経緯・出典誰かご存知ないですか #JVM上に関数型言語を作ると末尾再帰が
2012-03-28 14:41:29recur special operator, which does constant-space recursive looping by rebinding and jumping to the nearest enclosing loop or function frame
2012-03-28 14:46:54