LINUX.ORG.RU

История изменений

Исправление dave, (текущая версия) :

Для хвостовой рекурсии используется специальная форма recur, на самом деле вместо имени рекурсивной функции в теле этой функции нужно всего лишь написать recur и рекурсия развернётся в цикл

Прикольно. В интернете полно информации, а ложные представления все так же сильны.

Не любая хвостовая рекурсия развернется в цикл _целевого_ языка, не любая. Хвостовая рекурсия эквивалентна циклу определенной воображаемой машины (см. PAIP), но это совсем не то же самое, что цикл такого _целевого_ языка, как clojure.

Контр-пример: косвенная рекурсия, которая естественным образом возникает при использовании продолжений. Вот, фиг ее сможет записать кто на java, не то, что на clojure или scala. Тем менее, в рамках упомянутой воображаемой машины из PAIP там действительно будет нечто похожее на цикл во время исполнения.

Исправление dave, :

Для хвостовой рекурсии используется специальная форма recur, на самом деле вместо имени рекурсивной функции в теле этой функции нужно всего лишь написать recur и рекурсия развернётся в цикл

Прикольно. В интернете полно информации, а ложные представления все так же сильны.

Не любая хвостовая рекурсия развернется в цикл _целевого_ языка, не любая. Хвостовая рекурсия эквивалентна циклу определенной воображаемой машины (см. PAIP), но это совсем не то же самое, что цикл такого _целевого_ языка, как clojure.

Контр-пример: косвенная рекурсия, которая естественным образом возникает при использовании продолжений. Вот, фиг ее сможет записать кто на java, не то, что на clojure или scala. Тем менее, в рамках упомянутой вооброжаемой машины из PAIP там действительно будет нечто похожее на цикл во время исполнения.

Исходная версия dave, :

Для хвостовой рекурсии используется специальная форма recur, на самом деле вместо имени рекурсивной функции в теле этой функции нужно всего лишь написать recur и рекурсия развернётся в цикл

Прикольно. В интернете полно информации, а ложные представления все так же сильны.

Не любая хвостовая рекурсия развернется в цикл _целевого_ языка, не любая. Хвостовая рекурсия эквивалентна циклу определенной воображаемой машины (см. PAIP), но это совсем не то же самое, что цикл такого _целевого_ языка, как clojure.

Контр-пример: косвенная рекурсия, которая естественным образом возникает при использовании продолжении. Вот, фиг ее сможет записать кто на java, не то, что на clojure или scala. Тем менее, в рамках упомянутой вооброжаемой машины из PAIP там действительно будет нечто похожее на цикл во время исполнения.