2010-12-05 10 views
1

=、<などのような関数には問題があります。まず最初にすべてを実装しようとしています。私が持っているものは次のものです(それほど大したものではありません)。スキーム:組み込み関数を再定義する

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

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

Iは、(= 2 3)、または任意の他の同様のコールを実行すると、しかし、これは無限の再帰またはヒープオーバーフローのいずれかになります。

+0

あなたは '='ではなく 'equal? 'を実装していると思いますが、 – erjiang

答えて

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))))) 

私には別の問題があります。私は<でもこれをやろうとしています。だから、等しい?動作しません。

関連する問題