5

私が知る限り、Clojurerecurはコンパイラによってサポートされていますが、他の Lisp では低レベルで実装されています。

私が読んだように、これは「一般的な」TCO ではありません。明白なこと (キーワード + チェックが必要) は別として、何らかの方法でrecurそれほど強力ではありませんか?

4

2 に答える 2

2

recur一般的なTCOのサブクラスである末尾再帰の最適化のみをサポートします。Clojureは、を介した相互再帰または間接再帰もサポートしますtrampoline

編集 また、一般的なTCOはJava 7を使用してJVMに到達することが期待されてrecurおり、一時的な解決策として意図されていたと思います。その後、Oracleが発生しました。私はそれをProjectLambdaの(Javaでクロージャを追加する)スケジュールと混ぜ合わせました

于 2012-04-17T06:49:14.643 に答える
1

recurrecur は、ループと関数の両方で機能し、TCO の完全な実装で行われることのいくつかを実行しないという点で、完全な TCO とは少し異なります。これに対する哲学的な裏付けは、統一された構文を静かに最適化するのではなく、特別な部分を特別に見せることです。

于 2012-04-16T21:58:18.007 に答える