2015-02-10 52 views

回答

0

这是,但是因为您引用了包含string->symbol的表达式,所以从未得到评估。我试图展示正确的方式来获得你想要的东西,但目前还不清楚这是什么。

基于您的评论(而忽略逗号),似乎你想:

(cons (list 'someword (string->symbol "somevarname")) restoflist) 
+0

我想建立一个列表,其中第一单元是(花,变量值的符号),并将其添加到(1 2 3)说产生((花,变量值的符号)1 2 3)。 – user35202 2015-02-10 21:47:01

+1

@ user35202目前还不清楚为什么你在那里有一个逗号。你真的想在你的输出中输入一个逗号吗? – 2015-02-10 21:58:15

+0

@AlexisKing是的。我想让我的最终名单看起来像'((SUN,blue)2 3 4)说。 – user35202 2015-02-10 22:01:06

1

报价使得文字列表。要在运行时动态创建列表,还可以使用quasiquote和unquote。对于你来说,它看起来像下面这样(假设somevarname被本地或全局绑定):

 
(cons `(someword ,(string->symbol somevarname)) (restoflist)) 
+0

这不适用于我(它不评估somevarname),除非我错过了什么 – user35202 2015-02-11 18:53:19

+0

你是否正确地把[\']而不是[']?并且某个varname必须由'let'或'define'绑定。 ((somevarname“foo”))(cons'(someword,(string-> symbol somevarname))(restoflist))) – 2015-02-11 20:52:28

+0

是的,你是对的。谢谢 – user35202 2015-02-15 17:07:40