Skip to content

Latest commit

 

History

History

otus-03

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

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

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