2013-10-11 29 views
0

第一個進入間隔,第二個應該在該間隔內進行。爲什麼這樣不斷返回#<procedure>?

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

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

相反,我不斷收到程序返回。這可能是一個非常簡單的修復,我沒有看到它! T.T

回答

2

錯誤原因是您正在返回一個過程(第二個lambdalower-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) 
+0

確實修好了!非常感謝您的快速響應! – Ganondalf