Ho bisogno di scrivere una funzione che concatenerà una lista in una stringa. Esempio:
(concatString (citazione ("ciao" "mondo"))) ==> "ciao mondo"funzione lisp per concatenare un elenco di stringhe
Ecco quello che ho finora:
(defun concatString (list)
"A non-recursive function that concatenates a list of strings."
(cond
((not (listp list))
(princ "Error: argument to concatNR must be a list")(terpri)())) ; check if parameter is a list
(if (not (null list)) ;check if list is not null
(let ((result (car list)))
(dolist (item (cdr list))
(if (stringp item)
(setq result (concatenate result item)))
)
)
)
)
sto diventando un "Errore:" ciao "è e identificatore di tipo illegale" messaggio quando provo ad eseguirlo. Ho provato un sacco di modi per modificare questa funzione e non sono stato in grado di capirlo. Qualcuno ha qualche idea?
Im controllo se è una stringa perché per l'assegnazione, se è un numero non dovrebbe essere aggiunto alla stringa. Grazie mille anche se la correzione ha funzionato !!! =) – MBU
Questo è relativamente cattivo: si concatenano ripetutamente creando nuove stringhe di risultati in ogni momento. Questo probabilmente crea una grande quantità di spazzatura. –
@Rainer Joswig Come posso risolvere il problema? –