例如:
(setf s 2)
s => 2
(setf list1 '(1 s 3 4))
list1 => (1 s 3 4)
如何将s中存储的值添加到列表中? 对于这个例子,我想用s来生成一个列表(1 2 3 4) 我有一本lisp书,我正在阅读,我似乎无法提及如何做到这一点,所以我想我会问。 感谢
答案 0 :(得分:1)
所以Scheme中引用的数据就像字符串常量。如果我用Java编写"1 s 3 4"
,我将无法用变量内容替换s
。我必须写"1 " + s + " 3 4"
。在Lisp中,我们backquote在列表结构中执行此操作:
`(1 ,s 3 4)
; ==> (1 2 3 4)
请注意,这是一个技巧..它就像PHP中的“1 $ s 3 4”,因为它代表了创建列表的代码,其中评估了未引用的变量并返回一个新的列表结构。在引擎盖下它与写作非常相似:
(list 1 s 3 4)
; ==> (1 2 3 4)
当然list
不是原始的,因为它只使用cons
。它的作用是:
(cons 1 (cons s (cons 3 (cons 4 '()))))
; ==> (1 2 3 4)
答案 1 :(得分:1)
我想用s来生成一个列表(1 2 3 4)
函数list
可以很方便:
CL-USER 14 > (let ((s '2))
(list 1 s 3 4))
(1 2 3 4)
函数LIST
从其参数创建一个全新的列表。