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>

(1 2 3)適切な関数呼び出しではないため、これを修正して eval を使用すると、ネストされた任意の関数を処理できます。

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 に答える