2010-12-05 20 views
1

J'ai des problèmes avec les fonctions n-aires, par exemple, , etc. J'essaie d'implémenter = tout d'abord. Tout ce que j'ai est le suivant (ce n'est pas beaucoup).Schéma: redéfinir les built-ins

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

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

Cependant, il en résulte soit une récursion infinie ou débordement de tas quand je lance (= 2 3) ou tout autre appel similaire.

+0

Je pense que vous implémentez 'equal?', Pas '=' – erjiang

Répondre

0

Merci.

Je l'ai compris.

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

J'ai cependant un autre problème. J'essaye de faire ceci pour < également. Donc, égal? ne fonctionnera pas.