clojure符号解决评估失败的问题

时间:2019-10-31 22:27:31

标签: clojure

我是Clojure的初学者。 您能帮忙最后两个表达式吗? 我无法弄清楚为什么“无法解析符号:在这种情况下导致”。 非常感谢! (我正在尝试解决列表中包含引用的问题。)

(let [result ['(get result 1) 2]]
  (println (get result 1))          ;this can work
  (println (eval '(get result 1)))  ;error
  (println (eval(first result))))   ;error`

我希望(map eval result)会产生[2 2]

1 个答案:

答案 0 :(得分:0)

eval评估您在绑定到*ns*但名称空间为空白的命名空间中发送的表单。因此,周围的let值不会保留。定义的变量,动态绑定等将在那里。这篇文章很好地解释了Variable scope + eval in Clojure

顺便说一句,eval非常强大,令人迷惑,初学时会liquor饮。在Clojure的6到7年编程中,我从不需要它。