2017-10-19 6 views
0

Je veux combiner le code suivant dans un:Comment combiner ces deux fonctions (schéma)?

(define (foundList x) 
     (when (pair? x) 
     ((hash-ref *function-table* (car x)) (cdr x)))) 

(define (endofstring x) 
    (if (not (null?(cdr x))) 
    (endofstring (cdr x)) 
    (foundList (car x)))) 

J'ai essayé de faire à la suite, mais j'obtenir "hash-ref: aucune valeur trouvée pour la clé"

(define (endofstring x) 
    (if (not (null?(cdr x))) 
    (endofstring (cdr x)) 
    (if (when (pair? x) 
     ((hash-ref *function-table* (car x)) (cdr x))) 
     (car x) (void)))) 

Besoin d'aide Thanx

Répondre

1

Je pense que vous confondez x en endofstring avec en foundList.

Remplacez (foundList (car x)) par le corps de foundList, où vous avez remplacé x par (car x).
C'est, avec

(when (pair? (car x)) 
    ((hash-ref *function-table* (car (car x))) (cdr (car x)))) 

et vous obtenez

(define (endofstring x) 
    (if (not (null?(cdr x))) 
    (endofstring (cdr x)) 
    (when (pair? (car x)) 
     ((hash-ref *function-table* (car (car x))) (cdr (car x)))))) 
+0

ça ne fonctionnait pas ... Je me suis résultat suivant .... "quand: mauvaise syntaxe dans: (quand (paire ? (voiture x) ((hash-ref * fun-table * (voiture (voiture x))) (cdr (voiture x))))) " – mike123

+0

@ mike123 Mauvaises parenthèses. Fixé maintenant – molbdnilo