Il problema è il seguente e trovato in http://www.cs.indiana.edu/classes/b551-leak/scheme_practice.html.Come passare una stringa come nome di funzione nello schema? [Costruzione dinamica dei nomi delle funzioni in Schema]
Definizione del problema: Scrivere una funzione cxr che è una generalizzazione degli operatori di auto/cdr forniti in Schema. cxr dovrebbe prendere una stringa di "a" e "d" che rappresenta la sequenza di operazioni di auto e cdr da eseguire e restituire una funzione in grado di eseguire quella sequenza.
Quindi (cxr "annuncio") è equivalente alla funzione cadr.
((cxr "ad") '(i ii iii iv v vi vii)) ==> ii
(define sixth (cxr "addddd"))
(sixth '(i ii iii iv v vi vii)) ==> vi
Il mio tentativo: ho convertito cxr "annuncio" in una stringa "CADR" usando stringhe accodamento. [Questo è facile] .. Ora come posso collegare tra "cadr" con cadr ... Ho provato il simbolo string->, ma l'output è quotato e da cui la funzione non viene eseguita. - Quindi c'è un modo per smontare ?!
La vera domanda: come risolvere questo problema?
UPDATE: Grazie a tutti per queste risposte. Sono tutti corretti e l'ho risolto in questo modo prima ancora di pubblicare la domanda. Stavo principalmente cercando un modo per chiamare effettivamente caddddr quando l'input è (cxr adddd) ... Everbody ha fatto la stessa funzionalità di caddddr ma in realtà non ha chiamato cadddr.
Cioè, come fare le funzioni di wit lo stesso tipo di denominazione come CADR Caddr ecc
UPDATE: (Credo di avere trovato la soluzione ed è come segue - ma come si narra di sotto di essa non funziona per più d's):
(define cxr
(lambda (ad l)
((eval (string->symbol (string-append "c" ad "r"))) l)
)
)
Penso che l'idea sia di scrivere un generatore di funzioni dall'informazione nella stringa. – zellio