LINUX.ORG.RU

История изменений

Исправление Nervous, (текущая версия) :

В Racket, например, раздельная компиляция для каждого модуля и если другой макрос в другой единице компиляции, то ничего он не получит

Ну вот такой примитивный примерчик набросал — вроде всё работает.

;; foo.clj
(ns foo)

(defmacro deffoo [val] `(def ~'foo ~val))
;; eval_when.clj
(ns eval-when
  (:require [foo :refer [deffoo]]))

(deffoo (atom 0))

(swap! foo inc)
(println @foo)
;; 1

Линтеру, конечно, такие штуки не то, чтобы очень нравятся. Впрочем, и мне тоже.

Исходная версия Nervous, :

В Racket, например, раздельная компиляция для каждого модуля и если другой макрос в другой единице компиляции, то ничего он не получит

Ну вот такой примитивный примерчик набросал — вроде всё работает.

;; foo.clj
(ns foo)

(defmacro deffoo [val] `(def ~'foo ~val))
;; eval_when.clj
(ns eval-when
  (:require [foo :refer [deffoo]]))

(deffoo (atom 0))

(swap! foo inc)
(println @foo)
;; 1