Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.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 - Fatal编程技术网

LISP做函数行为吗?

LISP做函数行为吗?,lisp,Lisp,我有这个列表代码块 (defun test (y) (do ((l NIL (setq y (rest y)))) ((null y) 1) (setq l (append l '(1 1))) (print l) ) ) 输出如下图所示。出于某种原因,它将l设置为y,然后追加“(1)。有人能解释这种行为吗 循环的结构是: (do ((var init-form step-form)) (terminat

我有这个列表代码块

(defun test (y)
    (do 
        ((l NIL (setq y (rest y))))
        ((null y) 1)
        (setq l (append l '(1 1)))
        (print l)
    )
)
输出如下图所示。出于某种原因,它将l设置为y,然后追加“(1)。有人能解释这种行为吗


循环的结构是:

(do ((var init-form step-form))
    (termination-form result-form)
  (body))
我认为您缺少的是在每次迭代时执行
步骤表单
,并且该表单的结果被设置为变量。因此,在
step表单中使用
setq
是一个标志,表明您可能没有按照预期进行操作

因此,循环从
(test'(2 3 4))
开始的顺序是(省略打印)


do
循环的结构是:

(do ((var init-form step-form))
    (termination-form result-form)
  (body))
我认为您缺少的是在每次迭代时执行
步骤表单
,并且该表单的结果被设置为变量。因此,在
step表单中使用
setq
是一个标志,表明您可能没有按照预期进行操作

因此,循环从
(test'(2 3 4))
开始的顺序是(省略打印)


do
循环的结构是:

(do ((var init-form step-form))
    (termination-form result-form)
  (body))
我认为您缺少的是在每次迭代时执行
步骤表单
,并且该表单的结果被设置为变量。因此,在
step表单中使用
setq
是一个标志,表明您可能没有按照预期进行操作

因此,循环从
(test'(2 3 4))
开始的顺序是(省略打印)


do
循环的结构是:

(do ((var init-form step-form))
    (termination-form result-form)
  (body))
我认为您缺少的是在每次迭代时执行
步骤表单
,并且该表单的结果被设置为变量。因此,在
step表单中使用
setq
是一个标志,表明您可能没有按照预期进行操作

因此,循环从
(test'(2 3 4))
开始的顺序是(省略打印)


啊,谢谢你解释得这么好!我的困惑完全消除了。啊,谢谢你解释得这么好!我的困惑完全消除了。啊,谢谢你解释得这么好!我的困惑完全消除了。啊,谢谢你解释得这么好!我的困惑完全消除了。