我遇到了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 :(得分: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)))))
我有另一个问题。我正在尝试为<也。那么,平等吗?不行。