2010-12-05 94 views
1

我遇到了n元函數的問題,例如=,<等。我試圖實現=首先。我所擁有的是以下(這不是很多)。Scheme:重新定義內置函數

(define builtin-= =) 
(define (b= x y) (builtin-= x y)) 

(define (= . z) 
(if (null? z) #f 
    (b= (car z) (apply = (cdr z))))) 

然而,這導致在任一無限遞歸或堆溢出當我運行(= 2 3)或任何其它類似的呼叫。

+0

我認爲你正在實現`equal?`,而不是`=` – erjiang 2010-12-05 00:55:42

回答

0

謝謝。

我想通了。

(define builtin-= =) 
(define (b= x y) (builtin-= x y)) 

(define (= . z) 
    (if (or (null? z) (null? (cdr z))) 
    #t 
    (and (equal? (car z) (cadr z)) 
     (= (cdr z))))) 

雖然我有另一個問題。我也試圖爲<做這個。那麼,平等?將無法工作。