Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: "B. Pym" Newsgroups: comp.lang.lisp Subject: Re: Reading a text file not line by line but at once (beginner) Date: Wed, 14 Aug 2024 22:46:26 -0000 (UTC) Organization: A noiseless patient Spider Lines: 42 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Injection-Date: Thu, 15 Aug 2024 00:46:26 +0200 (CEST) Injection-Info: dont-email.me; posting-host="8dd797abfa9c4845a90c0b3910c2697b"; logging-data="679435"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18S7fSV3RQR3zfbqNLB7pNn" User-Agent: XanaNews/1.18.1.6 Cancel-Lock: sha1:pDy7ToY/4oYP7G3ldlbfCQcR3HA= Bytes: 2001 B. Pym wrote: > > > I have a file which consists of one word per line and I would like to > > > read it into a single list. > > > Searching the web[1] I found something which I adapted to my > > > needs. Basically the code works but it is terribly inefficient. This > > > is not the fault of the CL Cookbook. Probably I am using a hammer as a > > > screwdriver. > > > > > > I'd be happy if you can give me some directions how I can tackle the > > > problem in a better way. > > > > I like loop for this: > > > > (with-open-file (s "foo.txt" :direction :input) > > (loop for line = (read-line s nil) > > while line > > collect line)) > > Gauche Scheme > > (use gauche.generator) > > (with-input-from-file "temp.txt" > (cut generator->list read-line)) > > > Paul Graham, May 2001: > > A hacker's language is terse and hackable. Common Lisp is not. > > The good news is, it's not Lisp that sucks, but Common Lisp. newLISP (let (h (open "output.dat" "read")) (println (collect (read-line h))) (close h)) ("foo 0" "2 4 6" "8 9")