我从“The Little Schemer”开始学习计划,我正在使用Dr.Racket IDE。
(define atom?
(lambda (x)
(and (not (null? x)) (not (pair? x)))))
(atom? '(a b c))
(define lat?
(lambda (x)
(cond
((null? x) #t)
((atom? (car x)) (lat? (cdr x)))
(else "It is not a lat"))))
(lat? '(a b c J))
这是我的代码,用于查找给定列表是否仅包含原子。
每当我提供除空列表以外的任何列表,
首先它执行第一个cond如果列表是null
,因为它不是null?
的空输出是false它输出#f
但是我不想看到null的输出?程序。我只想#f
如果lat?
是false
而#t
lat?
是true
答案 0 :(得分:0)
您看到的第一个#f
来自(atom? '(a b c))
。删除或注释掉该行。
如果您只想#t
来自#f
或lat?
。更改您的else
条款:
(define lat?
(lambda (x)
(cond
((null? x) #t)
((atom? (car x)) (lat? (cdr x)))
(else #f))))
或只是
(define lat?
(lambda (x)
(or (null? x)
(and (atom? (car x)) (lat? (cdr x))))))