Questo è il codice per implementare il comando 'cat' con Lisp, come è spiegato nel libro ANSI Common Lisp, pagina 122.Perché la lettura riga viene eseguita due volte per la lettura da un file in Lisp?
(defun pseudo-cat (file) (with-open-file (str file :direction :input) (do ((line (read-line str nil 'eof) (read-line str nil 'eof))) ((eql line 'eof)) (format t "~A~%" line))))
Perché la funzione run lettura-line due volte? Ho provato a eseguirlo con una sola riga di lettura, ma il Lisp non ha potuto terminare il codice.
concattioni multiple e utilizzando il formato per creare nuove stringhe è davvero uno spreco. Non farlo. –
Questo è un approccio sbagliato poiché produrrà risultati errati. Per esempio. se si passa il nome di named pipe in linux o windows, probabilmente non sarà immediatamente pronto per l'input, quindi listen restituirà NIL e la funzione ritornerà senza effettivamente copiare nulla. –