Схема: переопределение встроенных модулей - PullRequest
1 голос
/ 05 декабря 2010

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

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

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

Однако это приводит либо к бесконечной рекурсии, либо к переполнению кучи при запуске (= 2 3), или к любому другому подобному вызову.

1 Ответ

0 голосов
/ 05 декабря 2010

Спасибо.

Я понял это.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...