Функциональное программирование в Clojure, функции высшего порядка, рекурсия и композиция.
- функция
- макрос
- особая форма
https://clojure.org/about/functional_programming
Функции — объекты первого класса.
- могут участвовать в выражениях;
- могут быть сохранены в переменные или быть частью составной структуры данных;
- могут быть переданы в функции как аргументы;
- могут быть возвращены из функции как результаты.
Всё является выражением; функции возвращают значение последней формы.
- "ленивые" последовательности
- иммутабельные структуры данных
- "чистые" функции
- ссылочная прозрачность (referential transparency)
- функции с переменным числом аргументов
- мультиарные функции
- инварианты
On his next walk with Qc Na, Anton attempted to impress his master by saying “Master, I have diligently studied the matter, and now understand that objects are truly a poor man’s closures.” Qc Na responded by hitting Anton with his stick, saying “When will you learn? Closures are a poor man’s object.” At that moment, Anton became enlightened.
http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html
- (тривиальный)
- apply
- partial
- complement
- threading macro: ->, ->>