169 похожих чатов

Как так никто не знает, что есть функциональный язык, если

есть готовые реализации чисто функциональных языков?
ФП парадигма основана двух операциях:
лямбда абстракция - построение функции по выражению путём связывания переменной выражения с параметром функции.
бета редукция - применение функции к значению.

Из этих двух операций конструируются основные операции для практического применения. Например:
композиция двух функций - комбинатор вида \f g x -> f (g x)
рекурсия через Y комбинатор (комбинатор неподвижной точки)

После этого любое вычисление (программа) сводится к последовательному построению функций, комбинированию их с помощью комбинаторов и применению к аргументам.

Основная сложность при этом - побочные эффекты, так как функции в данной парадигме чистые => побочные эффекты всегда находятся несколько за пределами ФП: в рамках чистого ФП можно только описать, какой побочный эффект мы хотим, но не выполнить его.

Итого: чистая ФП парадигма имеет следующие отличительные черты:
1. Замыкания, они же лямбда абстракции. Через них реализуется, в том числе, инкапсуляция.
2. Рекурсия как единственный способ реализации итеративных вычислений.
3. Ссылочная прозрачность - результат применения любой функции зависит только от значения параметра, к которому её применили.

По мне, так определение даже более чёткое, чем для ООП, с его инкапсуляцией, наследованием и полиморфизмом.

1 ответов

7 просмотров

Я бы не хотел вступать в спор, тем более, что это не мои слова и я слабо подготовлен. Но я не согласен :)

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
Как попросить stack install делать executable без .exe на винде?
Danila Danko
9
Карта сайта