Яка різниця між DEF і DEFN у Clojure?

defs обчислюються лише один раз, тоді як defn s (з або без аргументів) оцінюються (виконуються) кожного разу, коли їх викликають. Отже, якщо ваші функції завжди повертають одне й те саме значення, ви можете змінити їх на def s, але не інакше. 16 грудня 2010 р.

визначення визначає іменовану функцію: ;; тіло параметрів імені ;; —– —— ——————- (defn greet [name] (str "Hello, " name) ) Ця функція має один ім'я параметра, проте ви можете включити будь-яку кількість параметрів у вектор params.

LET — це не «зробити лексичне прив’язування в поточній області», а «зробити нову лексичну область з наступними прив’язками». Спрощено: def для глобальних констант, let для локальних змінних. Синтаксис для них різний, навіть якщо значення споріднені.

defn визначає функцію, а defmacro визначає макрос. Макрос схожий на функцію, але розглядає його аргумент (якщо це вирази як дані), потім обробляє їх і повертає дані (список символів, які є кодом), а потім оцінює цей код повернення.

Різниця полягає в часі, коли оцінюється «права сторона».. Таким чином, \let\foo\bar визначає, що \foo має значення, яке \bar мав у точці визначення. З іншого боку, \def\foo{\bar} фактично визначає \foo як значення, яке \bar має у точці використання. Це простий процес.

Мова не обов’язково має бути живою, щоб розвиватися чи впливати на інші мови. > Clojure – мова, яку багато великих і малих компаній успішно використовують у виробництві. Це звучить менш мертво, але Clojure може бути напівмертвим через його взаємодію зі звичайними бібліотеками Java.