Sujet : Re: Reading data into list from "include" file
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lispDate : 11. Jul 2024, 18:01:13
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v6ovk8$2he6l$1@dont-email.me>
References : 1 2 3 4 5
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:
B. Pym wrote:
Raymond Wiker wrote:
For people who don't like extended loop, I think this a better
implementation:
(defun read-numbers-from-file/2 (file-path n)
(with-open-file (f file-path :direction :input)
(let ((res nil))
(dotimes (i n)
(push (parse-integer (read-line f nil)) res))
(nreverse res))))
Gauche Scheme
(with-input-from-file "output.dat"
(lambda res
(until (read) eof-object? => x
(push! res x))
(reverse res)))
===>
(4 3 2 1 3 4 2 1 4 2 3 1 2 4 3 1 3 2 4 1 2 3 4 1 4 3 1 2
3 4 1 2 4 1 3 2 1 4 3 2 3 1 4 2 1 3 4 2 4 2 1 3 2 4 1 3
4 1 2 3 1 4 2 3 2 1 4 3 1 2 4 3 3 2 1 4 2 3 1 4 3 1 2 4
1 3 2 4 2 1 3 4 1 2 3 4)
(define (collect-till pred gen key)
(do ((x (gen) (gen))
(res '() (cons x res)))
((pred x) (reverse res))))
(with-input-from-file "output.dat"
(lambda _
(collect-till eof-object? read +)))
(with-input-from-file "output.dat"
(lambda _ (collect-while + read)))
Given:
(define (collect-while pred gen . opt-key)
(let ((key (if (pair? opt-key) (car opt-key) values)))
(do ((x (gen) (gen))
(res '() (cons (key x) res)))
((or (eof-object? x) (not (pred x))) (reverse res)))))