• Re: Reading a text file not line by line but at once (beginner)

    From B. Pym@21:1/5 to All on Mon Jul 22 17:57:00 2024
    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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to B. Pym on Tue Jul 23 01:20:00 2024
    On 2024-07-22, B. Pym <Nobody447095@here-nor-there.org> 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.

    TXR Lisp:

    (file-get-lines "temp.txt")

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From B. Pym@21:1/5 to B. Pym on Wed Aug 14 22:46:26 2024
    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")

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)