2010-12-05 47 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))))) 

虽然我有另一个问题。我也试图为<做这个。那么,平等?将无法工作。