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