方案:重新定义内置插件

时间:2010-12-05 00:11:37

标签: function scheme

我遇到了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)或任何其他类似的调用时,这会导致无限递归或堆溢出。

1 个答案:

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

我有另一个问题。我正在尝试为<也。那么,平等吗?不行。