我试图编写一个(简单,即没有eqan?
)one?
函数,如下所示:
(define one?
(lambda (n)
((= 1 n))))
但是上面的方法不起作用,因为当我这样称呼它时:
(one? 1)
我收到了这个错误:
procedure application: expected procedure, given: #t (no arguments)
写它的正确方法(来自The Little Schemer)是:
(define one?
(lambda (n)
(cond
(else (= 1 n)))))
为什么需要使用cond
withelse
子句,而不仅仅是返回(= 1 n)
?