我寫了一個測試功能來測試我的Lisp的一個簡單的口齒不清功能
(defun testp (lst)
(mapC#'(lambda (x y)
(if (null lst)
(return-from testp t)))
lst
(cdr lst)))
「迴歸 - 從」我認爲測試(testp「零)的理解,應該返回噸,但它返回NIL。 你能幫我理解爲什麼它返回NIL嗎?
非常感謝。
我寫了一個測試功能來測試我的Lisp的一個簡單的口齒不清功能
(defun testp (lst)
(mapC#'(lambda (x y)
(if (null lst)
(return-from testp t)))
lst
(cdr lst)))
「迴歸 - 從」我認爲測試(testp「零)的理解,應該返回噸,但它返回NIL。 你能幫我理解爲什麼它返回NIL嗎?
非常感謝。
您可以通過兩個空列表調用MAPC。
如果列表中沒有任何要映射的元素,應該如何使用LAMBDA函數?
順便說一下,你可以寫'list'而不是'lst'。
(defun testp (list)
(mapC#'(lambda (x y)
(if (null list)
(return-from testp t)))
list
(cdr list)))
通常,mapc
會將您的lambda應用於列表中的每個元素。我的猜測(我不使用Common Lisp)是因爲mapc
在列表中沒有元素可以操作,所以你的lambda根本不會被調用,結果函數的返回值是mapc
的返回值, (因爲它映射在什麼都沒有)是nil
。
如果您接受以前的問題,您可能會對未來的問題獲得更多幫助。 – 2009-12-03 16:53:13