我很确定这个解决方案非常简单,但很难找到...... 所以,如果我
=> (def x '(1 (dec 3) 3))
;user/x
如何评估表达式以便
=> (***insert function here** x)
;(1 2 3)
到目前为止,unquote
我得到(1 (dec 3) 3)
,这是没有引用的x,不是我想要的。我查看`~x
会返回相同的结果。是否存在〜@和`的某些组合返回已评估的函数? (我在这里抛出功能,这些都不是限制)
如果可能,请尽量不要更改我原来的x定义。
好的,假设这个问题,表达式为'(list 1 (dec 3) 3)
现在我该如何检索
=> (***insert function here** x)
;(1 2 3)
是的,现在eval有效。感谢您添加重要的输入。
答案 0 :(得分:2)
这可以通过在序列列表上映射eval
来实现。
core> (def x '(1 (dec 3) 3))
core/x
core> x
(1 (dec 3) 3)
core> (map eval x)
(1 2 3)
core>
因为(1 2 3)
不是一个正确的函数调用,我们可以修复它,然后使用eval,然后处理任意嵌套的函数。
utotestbed.core> (def x '(1 (dec 3) 3))
#'autotestbed.core/x
autotestbed.core> (eval (cons 'list x))
(1 2 3)