Sujet : Re: Newbie cluelessness continued...
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp comp.lang.schemeDate : 07. Jul 2025, 06:13:21
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <104fl1g$2oqg5$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:
Tim Bradshaw wrote:
(with-open-file (...)
(loop for line = (read-line stream nil stream)
until (eql line stream)
collect line))
Gauche Scheme
(use srfi-42) ;; list-ec
(call-with-input-file "data.bak"
(lambda (port)
(list-ec (:port line port read-line) line)))
Sascha Wilde wrote:
speaking of basic tools i would prefer using do rather when loop
(which IMHO is quite "unlispish") like:
(defun read-file (arg-file-name)
(with-open-file (stream arg-file-name :direction :input)
(do ((line nil (read-line stream nil stream))
(r nil (push line r)))
Should have used cons instead of push.
((eql line stream) (cdr (nreverse r))))))
The cdr removes the bogus first element (nil).
Scheme
(define (file->lines file-name)
(with-input-from-file file-name
(lambda()
(do ((line #f (read-line))
(r '() (cons line r)))
((eof-object? line) (cdr (reverse r)))))))