Эта привязка установлена с compile
. Способ компиляции с Clojure заключается в том, чтобы «запустить» NS для компиляции для его побочных эффектов верхнего уровня в отношении того, куда Clojure помещает вещи (например, ns
, defn
, def
,. ..) и сохраните результаты в виде .class
файлов.
Это также означает, что если ваш код содержит «реальные побочные эффекты» на верхнем уровне, они также будут выполняться во время компиляции, что обычно удивляет людей .
Таким образом, если у вас есть «опасные» вещи, которые вы хотите сделать после загрузки ns, вы можете защитить от выполнения во время компиляции, проверив *compile-files*
.
Существуют и другие способы «скрыть» вещи от компилятора. Например, обычным вариантом использования является использование delay
для def
s, которые вызывают побочные эффекты, такие как создание соединения с базой данных.