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 <jinsongli...@gmail.com>
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 <arthurmac...@gmail.com>
> 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 <jinsongli...@gmail.com>
>> 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
>>> Chicken-users@nongnu.org
>>> https://lists.nongnu.org/mailman/listinfo/chicken-users
>>>
>>>
>>
>
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to