0

我很确定这个解决方案非常简单,但很难找到......所以如果我

=> (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 有效。感谢您添加重要的输入。

4

1 回答 1

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>

since (1 2 3) is not a proper function call we can fix that and then use eval, which would then handle arbitrarily nested functions.

utotestbed.core> (def x '(1 (dec 3) 3))                                                                   
#'autotestbed.core/x                                                                                       
autotestbed.core> (eval (cons 'list x))                                                                    
(1 2 3)  
于 2012-08-17T23:47:33.800 回答