Scheme:重新定义内置函数
问题描述:
我遇到了n元函数的问题,例如=,<等。我试图实现=首先。我所拥有的是以下(这不是很多)。Scheme:重新定义内置函数
(define builtin-= =)
(define (b= x y) (builtin-= x y))
(define (= . z)
(if (null? z) #f
(b= (car z) (apply = (cdr z)))))
然而,这导致在任一无限递归或堆溢出当我运行(= 2 3)或任何其它类似的呼叫。
答
谢谢。
我想通了。
(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)))))
虽然我有另一个问题。我也试图为<做这个。那么,平等?将无法工作。
我认为你正在实现`equal?`,而不是`=` – erjiang 2010-12-05 00:55:42