Clojure, core.logic, мини-канрен, Reasoned Schemer

Код

(defn ex20 []
  (run*
    [x]
    (resto '(c o r n) (list x 'r 'n))))

(defn ex20a []
  (run*
    [x]
    (resto '(c o r n) `(~x r n))))

Результаты

(ex20) -> (o)
(ex20a) -> ()

Вопрос:

Почему? Что происходит? Есть ли какое-то странное взаимодействие между run* и макросами?

Спасибо!


person Community    schedule 31.05.2012    source источник


Ответы (1)


символы пространств имен синтаксических кавычек:

(defn ex20a []
  (run* [x]
    (resto `(c o r n) `(~x r n))))

or

(defn ex20a []
  (run* [x]
    (resto '(c o r n) (list x 'r 'n))))
person dnolen    schedule 31.05.2012
comment
глупый дополнительный вопрос: зачем мне использовать ' вместо ' ? - person ; 01.06.2012