вложенные макросы в clojurescript - PullRequest
3 голосов
/ 24 октября 2011

В файле я определяю эти 2 макроса:

(ns macros)

(defmacro foo [a]
  `(+ ~a 2))

(defmacro bar [a]
  `(* 2 (foo ~a)))

В clojure оба макроса работают должным образом.

В clojurescript работает только макрос "foo", "bar" производит этоошибка:

"Error evaluating:" (bar 0) :as "(2 * macros.foo.call(null,0));\n"
org.mozilla.javascript.EcmaError: ReferenceError: "macros" is not defined. (<cljs repl>#4)
    at <cljs repl>:4 (anonymous)
    at <cljs repl>:4

Кажется, что здесь макрос "foo" не раскрывается, а интерпретируется как вызов функции.

Это ошибка в clojurescript или я что-то не так?

1 Ответ

3 голосов
/ 24 октября 2011

Я полагаю, что проблема, которую вы видите здесь, связана с пространством имен одного элемента для файла макроса. Если вы измените его на util.macros и поместите в нужное место на classpath, чтобы учесть это, он будет работать.

Вероятно, ошибка, если она работает без проблем в Clojure.

...