Although I can't imagine why you'd need it, but in order to get list of
lists you could do:
(define (read-all-lines filename)
(with-input-from-file filename
(lambda ()
(map (lambda (x)
(list (string->number x)))
(read-lines)))))
I'm not sure that's what you want.
Cheers,
Arthur
On Wed, Jul 13, 2016 at 12:49 AM, Jinsong Liang <[email protected]>
wrote:
> Hi Arthur,
>
> This simplifies my code a lot! I will give it a try.
>
> Thank you!
>
> Jinsong
>
> On Tue, Jul 12, 2016 at 11:45 PM, Arthur Maciel <[email protected]>
> wrote:
>
>> Jinsong, the closest solution I can think of is the read-lines procedure,
>> which returns a list of strings (each string a line read).
>>
>> 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.
>>
>> An example would be:
>>
>> (define (read-all-lines filename)
>> (with-input-from-file filename
>> (lambda ()
>> (map string->number (read-lines)))))
>>
>> Cheers,
>> Arthur
>>
>>
>> On Wed, Jul 13, 2016 at 12:07 AM, Jinsong Liang <[email protected]>
>> 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
>>> [email protected]
>>> https://lists.nongnu.org/mailman/listinfo/chicken-users
>>>
>>>
>>
>
_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users