История изменений
Исправление den73, (текущая версия) :
Ну везде можно написать ф-цию которая зависит только от входных данных.
Ты же говоришь «говнять нельзя», а твой ответ как раз в стиле «говнять». Правильная реализация чистоты, это когда ты пишешь в коде «эта функция должна быть чистой». Дальше ты пишешь определение функции. И если она не чистая, то она не компилируется. Это минимум, который компилятор языка должен предоставлять, если он хочет называться функциональным. И минимум, который должен быть в спецификации языка. Иначе да, получается, что вообще нет смысла в слове «функциональный язык». В Хаскеле, допустим, это звучит примерно так: «если модуль прямо или косвенно не импортирует IO, то он чистый». Не уверен, что это так уж круто, но более-менее сойдёт.
В CL это никак не звучит. Нет никакого инструмента, чтобы нечистая функция не скомпилировалась, кроме рук.
Исходная версия den73, :
Ну везде можно написать ф-цию которая зависит только от входных данных.
Ты же говоришь «говнять нельзя», а твой ответ как раз в стиле «говнять». Правильная реализация чистоты, это когда ты пишешь в коде «эта функция должна быть чистой». Дальше ты пишешь определение функции. И если она не чистая, то она не компилируется. Это минимум, который компилятор языка должен предоставлять, если он хочет называться функциональным. И минимум, который должен быть в спецификации языка. Иначе да, получается, что вообще нет смысла в слове «функциональный». В Хаскеле, допустим, это звучит примерно так: «если модуль прямо или косвенно не импортирует IO, то он чистый». Не уверен, что это так уж круто, но более-менее сойдёт.
В CL это никак не звучит. Нет никакого инструмента, чтобы нечистая функция не скомпилировалась, кроме рук.