我有一个递归函数,基本上保持附加元素列表递归,直到满足条件。虽然有一个问题,那就是使用append
,我们必须给它一个引用列表。这样做计划:递归与列表附加
(append (1 2) 3)
给了我们一个错误。
问题是,当我第一次通过一个列表的参数,我可以把'
使它成为一个引用列表。但是,一旦我追加了一些东西到列表中,并且它被递归地传递给同一个函数,第二次append
试图工作,它会看到列表不再被引用,所以Scheme认为它是一个过程而不是列表。让我告诉你的代码的简化版本:
(define simple
(lambda (x y)
(if (equal? x '())
(display 'success!)
(simple (cdr x) (append y (car x))))))
我们做(simple '(1 2 3) '())
我意识到上面的程序是没用的运行功能;这只是为了证明我在说什么。
谢谢!
适用'quote'给个说法 – 2013-03-22 03:12:57