Как заставить оценить? - PullRequest
       0

Как заставить оценить?

0 голосов
/ 13 сентября 2010

Поработав некоторое время с кавычками / кавычками, я хотел сделать трюк, но не хотел этого делать.Вот что я сделал и что получилось:

user=> (let [x '#(inc 1)] `(1 ~x))
(1 (fn* [] (inc 1)))

Но то, что я хотел, было:

(1 2)

Можете ли вы помочь мне сделать это?:)

А также объясните, какую «часть» Clojure вы используете ...

Ответы [ 2 ]

3 голосов
/ 13 сентября 2010

Вы можете использовать eval:

user=> (let [x `(inc 1)] 
         (eval `(list 1 ~x)))
(1 2)

Или условно:

user=> (defmacro foo [x] 
        `(list 1 ~x))
#'user/foo
user=> (foo (inc 1))
(1 2)
1 голос
/ 13 сентября 2010

Это будет работать так, как вы хотите:

user> (let [x (#(inc 1))] `(1 ~x))
;=> (1 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...