Ho un file che assomiglia a questo:convertire una stringa Lisp per lo streaming
A B C D E
0 8 6 12 5
8 0 10 8 9
6 10 0 7 11
12 8 7 0 6
5 9 11 6 0
non so in anticipo il numero di righe e colonne ci sarà. Vorrei leggere la riga superiore, che mi consentirà di conoscere il numero di righe da prevedere. Ho trovato la funzione (read <stream>)
del lisp che, in un ciclo, può analizzare ognuno dei caratteri come simboli. Tuttavia, non ho trovato un modo per limitare il ciclo alla sola lettura della prima riga e alla sua interruzione. La soluzione che sto cercando di fare il lavoro sarebbe qualcosa di simile
(with-open-file (stream "/home/doppler/tmp/testcase1.txt")
(setf line (read-line stream))
(when line
(loop for symbol = (read line nil)
while symbol do (print symbol))))
Il problema di questo è che (read-line stream)
restituisce una stringa che non può essere analizzato da (read line nil)
per estrarre i simboli (S-espressioni).
Come posso convertire la linea della stringa in uno stream o, se possibile, estrarre i simboli direttamente dalla stringa?
Ho finito per usare il read-from-string. La funzione read-delimited-list sembra utile, ma non mi sono ancora abituato a leggere la documentazione LISP e quindi non sono abbastanza sicuro di come usarlo. Grazie! – royvandewater