Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lisp 将两个列表附加在一起_Lisp_Common Lisp - Fatal编程技术网

Lisp 将两个列表附加在一起

Lisp 将两个列表附加在一起,lisp,common-lisp,Lisp,Common Lisp,以上是我到目前为止的代码。我试图将两个列表附加到一个列表中。第一个函数接收一个数字并返回两个数字的列表。第二个函数用于接收列表,将树节点函数应用于该列表中的第一个元素,然后将原始列表和树节点列表附加在一起。例如:(3,4,5)如果你有一个列表a和一个列表b,你可以通过对它们应用append来得到这两个: (defun tree-node(x) (list(* 2 x) (+(* 2 x) 1)) (tree-node 4) (8 9) (defun special-queue(y) (se

以上是我到目前为止的代码。我试图将两个列表附加到一个列表中。第一个函数接收一个数字并返回两个数字的列表。第二个函数用于接收列表,将树节点函数应用于该列表中的第一个元素,然后将原始列表和树节点列表附加在一起。例如:(3,4,5)如果你有一个列表
a
和一个列表
b
,你可以通过对它们应用
append
来得到这两个:

(defun tree-node(x)
(list(* 2 x) (+(* 2 x) 1))
(tree-node 4)
(8 9)

 (defun special-queue(y)
 (set x (list y (+ 1 y) (+ 2 y)))
 (append(list(rest z) (tree-node first z)))
 )
请注意,您所写的内容实际上是:

(append a b)
要建立本地绑定,请使用
let

(append (list a b))  ; wrong

(set x…
不会做您可能认为它会做的事情
set
是Common Lisp中的一个函数,主要是为了与古老的Lisp向后兼容而存在的
(设置x 42)
x
作为变量进行计算,并将
x
的值传递给
set
。该值必须是一个符号。函数将
42
存储到该符号的动态/全局函数绑定中。该符号很可能不是
x
,除非
x
本身是一个值。TL:DR:您可能需要
setf
setq
。您需要正确格式化代码;它现在无法读取。同样,对于全局变量,如
x
z
,它们应该具有
*earnuffs*
,这样它们就可以脱颖而出。
(let ((initial-queue (list n (+ n 1) (+ n 2))))
  (append (rest initial-queue) (child-indices (first initial-queue))))