(fn [x] (+ x 5))
и #(+ % 5)
- Эти два полностью эквивалентны, последний просто использует макрос отправки , чтобы сделать код немного более кратким.Для коротких функций обычно предпочтительнее синтаксис #()
, а синтаксис (fn [x])
лучше для функций, которые немного длиннее.Кроме того, если у вас есть вложенные анонимные функции, вы не можете использовать #()
для обеих из-за неоднозначности, которую это может вызвать., кроме того, что имеет имя: add-Five.Иногда это может быть полезно, например, если вам нужно сделать рекурсивный вызов вашей функции. *
(partial + 5)
- В ближайшем будущем +
- это функция с переменным числом аргументов.Это означает, что он может принимать любое количество аргументов.(+ 1 2)
и (+ 1 2 3 4 5 6)
являются совершенно правильными формами.partial
создает новую функцию, идентичную +
, за исключением того, что первый аргумент всегда равен 5. Из-за этого ((partial + 5) 3 3 3)
допустимо.Вы не можете использовать другие формы в этом случае.
* При выполнении рекурсивного вызова из хвостовой позиции следует использовать recur
, однако это не всегда возможно.