我正在學習Lisp,我必須編寫一個函數,它的返回值是一個包含來自給定輸入的奇數整數(如果有的話)的列表。在代碼中我有這樣的:在Lisp中使用cons函數的問題?
(defun f3 (a)
(cond
((null a) nil)
((and (numberp (car a)) (oddp (car a))) (cons (car a) (f3 (cdr a))))
(T (f3 (cdr a)))
) ; end cond
)
我原本想使用append函數,但是我不斷收到錯誤。
向我推薦使用cons功能。當我這樣做時,我的功能開始工作(代碼在上面)。我原本是這樣的:
(defun f3 (a)
(cond
((null a)())
((and (numberp (car a)) (oddp (car a))) (append (f3 (cdr a)) (car a))))
(T (append() (f3 (cdr a))))
)
)
但不斷出現錯誤。例如,如果我調用(f3 '(1 2 3))
,它會說「錯誤3不是類型LIST」。所以,我的問題是爲什麼cons在這裏工作,爲什麼append不起作用?缺點是如何工作的?提前致謝。
正是我在找的東西。這是一個寫得很好的答案。 –