Deutsch English Français Italiano |
<v6ovk8$2he6l$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: "B. Pym" <Nobody447095@here-nor-there.org> Newsgroups: comp.lang.lisp Subject: Re: Reading data into list from "include" file Date: Thu, 11 Jul 2024 16:01:13 -0000 (UTC) Organization: A noiseless patient Spider Lines: 54 Message-ID: <v6ovk8$2he6l$1@dont-email.me> References: <87a5q7gzm1.fsf@axel-reichert.de> <XPVFq67p4V6ivNUR3@bongo-ra.co> <m2y1dqrxt7.fsf@MacBook-Pro-2.home> <v6mbui$1vpsc$1@dont-email.me> <v6od6u$2e0tq$1@dont-email.me> Injection-Date: Thu, 11 Jul 2024 18:01:13 +0200 (CEST) Injection-Info: dont-email.me; posting-host="456461bd00b90f08114198f185f05762"; logging-data="2668757"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+Bxj62fDxq6DygUog+W8rK" User-Agent: XanaNews/1.18.1.6 Cancel-Lock: sha1:u+Jekx48rmgjBW4MkZoOeQEeJqI= Bytes: 2374 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)))))