Существует такое понятие, как "концевая рекурсия":
Код
procedure Proc();
begin
...// некий код
Proc();
end;
Вот задался вопросом - существует ли компилер с подобной фишкой для Паскаля?
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| hardcase |
Сообщение
#1
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Недавно увлекся функциональным программированием, конкретный язык - Nemerle. Язык интересен тем, что все синтаксические конструкции (в терминах Nemerle - макросы) выражены через рекурсию и сопоставление с образцом.
Существует такое понятие, как "концевая рекурсия": Код procedure Proc(); begin ...// некий код Proc(); end; Вот задался вопросом - существует ли компилер с подобной фишкой для Паскаля? -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
![]() ![]() |
| SKVOZNJAK |
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: 11 |
Безопасность зависит от конкретного компилятора, на ФПЦ нормально работает. С чем сталкивался, так с невозможностью присвоить переменной строкового типа значение другой такой же переменной. Пришлось вводить в неё значения как в простой массив, других глюков не замечено. В описанном языке присутствует очередная эмуляция некоторых возможностей GOTO. До этого этот оператор эмулировали в ООП, там тоже есть рекурсия, хотя её и не заметно. Сейчас нет предпосылок для очередного такого проекта в ФПЦ. Может когда-нибудь потом что-нибудь готошное разработчики в очередной раз воспроизведут в другой обёртке. Сейчас бы им выпустить нормальные версии компилятора с не повисающей в ИДЕ мышью, и тогда им большой респект
|
| hardcase |
Сообщение
#3
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Ночью перечитал пост... Убила фраза.
В описанном языке присутствует очередная эмуляция некоторых возможностей GOTO Трудно удержаться от холивара... С каких это пор оптимизация хвостовой рекурсии стала обёрткой GOTO? Синтактсически подобный вызов аналогичен обычному вызову, порождающему активацию. Далее, как это в ООП рекурсия слабо используется? Разного рода вычислительных задач всегда хватает, и дополнительный инструмент был бы вполне уместен... -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
| SKVOZNJAK |
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: 11 |
Ночью перечитал пост... Убила фраза. Трудно удержаться от холивара... С каких это пор оптимизация хвостовой рекурсии стала обёрткой GOTO? Синтактсически подобный вызов аналогичен обычному вызову, порождающему активацию. Далее, как это в ООП рекурсия слабо используется? Разного рода вычислительных задач всегда хватает, и дополнительный инструмент был бы вполне уместен... Для меня идеальный код, это такой код в котором как минимум десятиями не нужно вносить существенных изменений, даже при добавлении новых возможностей. GOTO для меня не главный оператор, а труднозаменимая палочка выручалочка - что есть в асме, то не безобразно. Книгу http://rapidshare.de/files/26242673/000897.rar.html просмотрел с поисковиком. Чем такой формат читать в вин, не скажу - не знаю Сделай такое другим способом и найди 10 отличий. У Макконнелла даже произвольный доступ к элементу массива назван гото подобным. Совсем другое говорил, очень даже используется, на этом ООП построено. Смысла в споре не вижу, у нас разные требования к коду. Мне нужен приближённый к моим представлениям об идеале и внешняя простота здесь не самоцель. |
hardcase Оптимизация концевой рекурсии 17.05.2007 3:15
Lapp Забавно, действительно в этом случае локальные пар… 17.05.2007 5:35
SKVOZNJAK Да хоть борланд, хоть ФПЦ, ввезде это работает, ес… 18.05.2007 14:50
hardcase Да хоть борланд, хоть ФПЦ, ввезде это работает, е… 18.05.2007 18:05
hardcase Для меня идеальный код, это такой код в котором к… 20.05.2007 18:29![]() ![]() |
|
Текстовая версия | 28.12.2025 21:32 |