为什么这会继续返回#<procedure>?</procedure>

时间:2013-10-11 23:33:51

标签: scheme

第一个进入一个区间,第二个应该是那个区间。

(define make-interval
    (lambda (lower upper)(cons lower upper)))

(define lower-endpoint
    (lambda (interval)
      (lambda (lower upper)
        (car (interval lower upper)))))

相反,我继续让程序返回。这可能是一个非常简单的修复,我看不到它! T.T

1 个答案:

答案 0 :(得分:2)

导致错误的原因是您正在返回一个程序(lambda中的第二个lower-endpoint),而不是一个值。

第二个程序只需要interval作为参数,第二个lambda是不必要的,lowerupper参数也是如此:为什么要求它们,如果interval参数已经有了它们?这就是你的意图:

(define lower-endpoint
  (lambda (interval)
      (car interval)))

您可以使用更简单的等效语法进行过程定义:

(define (lower-endpoint interval)
  (car interval))

甚至更短,只需创建一个car的别名,因为这是lower-endpoint正在做的唯一事情:

(define lower-endpoint car)