Определение функций встроенных модулей Clojure: def против defn

#function #clojure #definition

#функция #clojure #определение

Вопрос:

Почему некоторые (многие) встроенные функции Clojure определены с помощью def , а не defn ?

Я знаю, что defn это ярлык def , но мне интересно, есть ли какая-то другая причина, такая как соображения эффективности / удобочитаемости / стиля / начальной загрузки.

Ответ №1:

Читайте дальше в clojure/core.clj defn еще не существует вверху, потому что этот файл создает язык по ходу работы. После нескольких сотен строк defn записывается, а функции после этого определяются с defn помощью .

Комментарии:

1. гениально. постепенное построение языка — одна из многих вещей, которые делают исходный код Clojure таким интересным для чтения!