Я читаю книгу Расса Олсена "Getting Clojure".В главе 8 «Определение, символы и переменные» приведено следующее определение функции:
(def second (fn second [x] (first (next x))))
^^^^^^
Мой вопрос касается подчеркнутого second
, который идет вторым.
ВВо-первых, я думал, что этот синтаксис неправильный, поскольку анонимным функциям не нужно имя.Но , как выясняется, , этот синтаксис правильный.
Usage: (fn name? [params*] exprs*)
(fn name? ([params*] exprs*) +)
Я попытался сравнить следующие два вызова функции.
user> (fn second [x] (first (rest x)))
#function[user/eval5642/second--5643]
user> (fn [x] (first (rest x)))
#function[user/eval5646/fn-5647]
Помимо имени функции, похоже, что нет никакой разницы.
Зачем нужен аргумент name?
для fn
?