2010-12-05 4 views
1

У меня возникли проблемы с функциями n-ary, например, = < и т. Д. Я пытаюсь реализовать = в первую очередь. Все, что у меня есть, это следующее (это не очень много).Схема: переопределение встроенных модулей

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

У меня есть еще одна проблема. Я тоже пытаюсь сделать это для <. Итак, равный? не будет работать.

Смежные вопросы