2017-10-19 5 views
0

Ich möchte in einem folgenden Code kombinieren:Wie kombiniert man diese beiden Funktionen (Schema)?

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

Ich habe versucht, folgendes zu tun, aber ich bekommen "Hash-ref: kein Wert für Schlüssel gefunden"

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

Antwort

1
Hilfe thanx Benötigen

Ich glaube, du verwirrst x in endofstring mit x in foundList.

ersetzen (foundList (car x)) mit dem Körper foundList, wo Sie x mit (car x) ersetzt haben.
Das heißt, mit

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

und Sie

(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

es hat nicht funktioniert ... Ich habe Ergebnis folgende .... ", wenn: schlechte Syntax in: (wenn (Paar ? (Auto x) ((hash-ref * Spaß-Tabelle * (Auto (Auto x))) (cdr (Auto x))))) " – mike123

+0

@ mike123 Schlechte Klammern. Jetzt behoben. – molbdnilo

Verwandte Themen