есть готовые реализации чисто функциональных языков?
ФП парадигма основана двух операциях:
лямбда абстракция - построение функции по выражению путём связывания переменной выражения с параметром функции.
бета редукция - применение функции к значению.
Из этих двух операций конструируются основные операции для практического применения. Например:
композиция двух функций - комбинатор вида \f g x -> f (g x)
рекурсия через Y комбинатор (комбинатор неподвижной точки)
После этого любое вычисление (программа) сводится к последовательному построению функций, комбинированию их с помощью комбинаторов и применению к аргументам.
Основная сложность при этом - побочные эффекты, так как функции в данной парадигме чистые => побочные эффекты всегда находятся несколько за пределами ФП: в рамках чистого ФП можно только описать, какой побочный эффект мы хотим, но не выполнить его.
Итого: чистая ФП парадигма имеет следующие отличительные черты:
1. Замыкания, они же лямбда абстракции. Через них реализуется, в том числе, инкапсуляция.
2. Рекурсия как единственный способ реализации итеративных вычислений.
3. Ссылочная прозрачность - результат применения любой функции зависит только от значения параметра, к которому её применили.
По мне, так определение даже более чёткое, чем для ООП, с его инкапсуляцией, наследованием и полиморфизмом.
Я бы не хотел вступать в спор, тем более, что это не мои слова и я слабо подготовлен. Но я не согласен :)
Обсуждают сегодня