Lisp,嵌套每个语句

时间:2014-09-06 21:10:02

标签: lisp common-lisp

我正在尝试编写一个函数,可以确定列表列表是否只包含数字。例如'('(1 2)'(3 4))=> t'而'('(1 2)'(3 x))=>零。我无法让我的代码工作,并感谢任何帮助!我一直在使用每一个。这是最好的方法吗?到目前为止,这是我的代码。

(defun list-all-numbers(l)
  (every #'numberp l))

(defun list-of-list-numbers(l)   
  (every #'list-all-numbers l))

1 个答案:

答案 0 :(得分:3)

您的功能运作良好:

? (LIST-OF-LIST-NUMBERS '((1 2) (3 4)))
T
? (LIST-OF-LIST-NUMBERS '((1 2) (3 x)))
NIL

但问题是您在示例中使用了过多的引用:

?  '( '(1 2) '(3 4) )
('(1 2) '(3 4))
? (car '( '(1 2) '(3 4) ))
'(1 2)
? (caar '( '(1 2) '(3 4) ))
QUOTE

但你只想要

? '((1 2) (3 4))
((1 2) (3 4))
? (car '((1 2) (3 4)))
(1 2)
? (caar '((1 2) (3 4)))
1