第一个进入一个区间,第二个应该是这个区间。
(define make-interval
(lambda (lower upper)(cons lower upper)))
(define lower-endpoint
(lambda (interval)
(lambda (lower upper)
(car (interval lower upper)))))
相反,我不断返回程序。这可能是一个非常简单的修复,我看不到它!TT
第一个进入一个区间,第二个应该是这个区间。
(define make-interval
(lambda (lower upper)(cons lower upper)))
(define lower-endpoint
(lambda (interval)
(lambda (lower upper)
(car (interval lower upper)))))
相反,我不断返回程序。这可能是一个非常简单的修复,我看不到它!TT
导致错误的原因是您返回的是一个过程( 中的第二个lambda
)lower-endpoint
,而不是一个值。
第二个过程只需要interval
as 参数,第二个lambda
是不必要的,lower
和参数也是一样的:如果参数已经有了它们upper
,为什么还要它们?interval
这就是你的意图:
(define lower-endpoint
(lambda (interval)
(car interval)))
您可以对过程定义使用更简单的等效语法:
(define (lower-endpoint interval)
(car interval))
甚至更短,只需创建 , 的别名car
,因为这是唯一要做lower-endpoint
的事情:
(define lower-endpoint car)