Mam plik, który wygląda tak:Konwersja Lisp ciąg strumienia
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
nie wiem z wyprzedzeniem jak wiele wierszy i kolumn nie będzie. Chciałbym przeczytać górną linię, która poinformuje mnie o liczbie wierszy, jakich można się spodziewać. Znalazłem funkcję (read <stream>)
Lispa, która w pętli może analizować każdy ze znaków jako symbole. Nie znalazłem jednak sposobu na ograniczenie pętli tylko do czytania pierwszej linii i zatrzymywania się tam. Rozwiązanie próbuję uczynić pracę byłoby coś
(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))))
Problem polega na tym, że (read-line stream)
zwraca ciąg znaków, które nie mogą być analizowane przez (read line nil)
wyodrębnić symboli (S-wyrażeń).
Jak mogę przekonwertować linię ciągu na strumień lub, jeśli to możliwe, wyodrębnić symbole bezpośrednio z ciągu znaków?
Skończyło się na tym, że używano read-from-string. Funkcja listy ograniczonej do odczytu wygląda na użyteczną, ale nie całkiem przywykłam do czytania dokumentacji LISP, więc nie jestem do końca pewna, jak z niej korzystać. Dzięki! – royvandewater