|
From: | Jinsong Liang |
Subject: | Re: [Chicken-users] read file into a list of lists |
Date: | Wed, 13 Jul 2016 00:14:29 -0400 |
ArthurCheers,Although I can't imagine why you'd need it, but in order to get list of lists you could do:I'm not sure that's what you want.
(define (read-all-lines filename)
(with-input-from-file filename
(lambda ()
(map (lambda (x)
(list (string->number x)))
(read-lines)))))On Wed, Jul 13, 2016 at 12:49 AM, Jinsong Liang <address@hidden> wrote:JinsongHi Arthur,This simplifies my code a lot! I will give it a try.
Thank you!On Tue, Jul 12, 2016 at 11:45 PM, Arthur Maciel <address@hidden> wrote:ArthurCheers,(map string->number (read-lines)))))(lambda ()(with-input-from-file filename(define (read-all-lines filename)Jinsong, the closest solution I can think of is the read-lines procedure, which returns a list of strings (each string a line read).An example would be:
http://api.call-cc.org/doc/extras/read-lines
Supposing you have a number per line, you could use string->number to get the result.On Wed, Jul 13, 2016 at 12:07 AM, Jinsong Liang <address@hidden> wrote:_______________________________________________Hi,I need to read a file (lines of numbers) into a list of lists with each line a list. I wrote the following function to do it:
(define (read-all-lines file-name)
(let ([output '()])
(let ([p (open-input-file file-name)])
(let f ([x (read-line p)])
(if (eof-object? x)
(close-input-port p)
(begin
(set! output (cons (string-split x) output))
(f (read-line p))))))
(reverse output)))I have a few questions regarding the above code:1. Is there an existing API to do the same thing?2. Using set! seems not a lispy coding style. Is it true?3. Any improvements I can make ? I bet there are tons.Thank you!Jinsong
Chicken-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/chicken-users
[Prev in Thread] | Current Thread | [Next in Thread] |