Хвостовой вызов в Java и C #? - PullRequest
1 голос
/ 09 декабря 2008

Я читал о Clojure и обнаружил, что в текущей версии Java не поддерживает хвостовые вызовы, и что люди генерируют исключения для имитации хвостовых вызовов в JVM, в любом случае, похоже, что люди делают какие-то сумасшедшие вещи. , Так что это заставило меня задуматься о вызове хвоста в C #, те же проблемы?

Ответы [ 2 ]

6 голосов
/ 09 декабря 2008

Код CLR будет вызывать вызов в некоторых случаях, но не в других - это зависит от JIT.

См. запись в блоге Дэвида Бромана и запись Шри Борде тоже.

Компилятор C # в настоящее время не генерирует хвостовой вызов IL, но иногда JIT все равно это делает.

1 голос
/ 09 декабря 2008

В некоторых случаях возможна рекурсия хвоста на JVM. Например, Scala требует эффективной реализации базовой хвостовой рекурсии (см. Этот пост в блоге, ищите Language Trivia # 8 , единственную цитату, которую я смог найти только сейчас). Говорят и исследуют вопрос о добавлении дополнительной поддержки, в то же время, что и Invoke Dynamic и другие функции, предназначенные для не-Java языков.

Также довольно часто говорят о подобных проблемах на Java Posse .

И да, я знаю, что это совершенно не ответ на ваш вопрос ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...