У меня есть функция, которая принимает функцию и номер и возвращает применение функции от числа и функция кубы:передавая функции в качестве аргументов в Clojure
(defn something [fn x]
(fn x))
(defn cube [x]
(* x x x))
Когда я вызываю функцию следующим образом это работает:
(something cube 4)
но это возвращает ошибку:
(something Math/sin 3.14)
Однако, это работает:
(something #(Math/sin %) 3.14)
Какое объяснение?
Спасибо, теперь я понимаю. На самом деле я пытался понять макросы, когда возникла эта путаница. Вы можете объяснить мне эту строку? - «Поскольку макросы не оценивают свои аргументы, им могут передаваться имена без кавычек, и можно вызвать вызовы функций с аргументами. Определения функций не могут этого сделать и вместо этого должны быть переданы анонимные функции, которые завершают вызовы функций. ' – Pranav
Мое замешательство заключается в том, что я ясно передал некотируемую функцию «куб» на «что-то», и это работает. – Pranav
Можете ли вы спросить об этом как о правильном SO-вопросе, а не в комментариях? Форматирование здесь довольно тусклое, и я действительно не хочу добавлять «другой ответ» к совершенно несвязанному вопросу. – amalloy