Skip to content

Latest commit

 

History

History
85 lines (52 loc) · 3.62 KB

File metadata and controls

85 lines (52 loc) · 3.62 KB

Clojure Developer. Урок 3

Функциональное программирование в Clojure, функции высшего порядка, рекурсия и композиция.

eval

Принципы ФП

https://clojure.org/about/functional_programming

Функции — объекты первого класса.

  • могут участвовать в выражениях;
  • могут быть сохранены в переменные или быть частью составной структуры данных;
  • могут быть переданы в функции как аргументы;
  • могут быть возвращены из функции как результаты.

Всё является выражением; функции возвращают значение последней формы.

Способы создания функций

functions.clj

Дополнительные возможности

  • функции с переменным числом аргументов
  • мультиарные функции
  • инварианты

Замыкания

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

Способы вызова функций

Рекурсия

recur

trampoline

Цикл loop

loop

Функции высшего порядка в стандартной библиотеке