Re[3]: История функционального программирования
От: dsorokin Россия  
Дата: 15.08.25 11:19
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>типа того, это история довольно специфического подмножества фя. в предисловии более подробно написано почему это не история лиспа, но вообще про лисп там довольно много написано. в основном, правда, для объяснения того, почему нельзя было вот так просто взять компилятор лиспа и использовать для имплементации фя из этого специфического подмножества.


Более того, критерии того, что считать ФЯ, а что не считать, они не отлиты еще в бронзе.

Допустим, мы вполне можем считать за ФЯ тот язык, где есть полная оптимизация хвостового вызова. А чем не критерий? Да, и не сильно разойдется с привычным списком языков ФП.

Так вот, в такой реализации Common Lisp как SBCL есть полноценная оптимизация хвостового вызова. Это означает, что бесконечный цикл, записанный через макрос cl-cont, будет работать бесконечно долго в этой реализации CL.

Для сравнения, в clojure и Scala никакой бесконечный цикл, записанный через CPS (continuation passing style), работать бесконечно долго не может, и скорее всего, что никогда не будет. Там просто сожрет весь стек. Кстати, пожалуй, это главная причина, почему в Scala прикрыли плагин продолжений.

Так что, не будем делать окончательных выводов. Впрочем, у тебя свое собственное определение ФЯ. Скажем, язык такой-то удовлетворяет необходимым требованиям называться "ФЯ по Клапацию". Вот, к такому определению у меня вопросов никаких нет
Отредактировано 15.08.2025 15:35 dsorokin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.