In your example using line-seq, should really surround it with the
with-open function so that it will close the reader?   Thanks.

On Wed, Nov 12, 2008 at 4:02 PM, Stephen C. Gilardi <[EMAIL PROTECTED]>wrote:

>
>
> On Nov 12, 2008, at 5:20 PM, Brian Doyle wrote:
>
> > It works great for me, but hoping to get any feedback
> > about coding style or there is already something out
> > there that does such a thing or whatever.  Thanks.
> >
> > (defn chunk-file
> >   "Takes a file, number of lines, a function and args.
> >     Reads in line-size from the file and passes each line
> >     and the args to the given function."
> >   ([file line-size f & args]
> >       (with-open r file
> >          (loop [l (.readLine r)
> >                    tlines []]
> >            (let [end? (nil? l)
> >                   lines (if (not end?) (conj tlines l) tlines)
> >                   chunk? (zero? (rem (count lines) line-size))]
> >                  (if (or chunk? end?)
> >                   (do
> >                     (doseq line lines (apply f line args))
> >                     (if (not end?)
> >                       (recur (.readLine r) [])))
> >                   (recur (.readLine r) lines)))))))
>
>
> A few quick comments:
>
> - When you only have one set of arguments, you can skip the pair of
> parens that start before the argument vector
>
> - Clojure has "line-seq". It returns a lazy sequence of lines read
> from a reader. To use it with a file, you can use code like this:
>
>        (ns my-ns
>         (:import (java.io BufferedReader FileReader)))
>
>        (defn file-lines
>         [file-name]
>         (line-seq (BufferedReader. (FileReader. file-name))))
>
>        (doseq line (file-lines my-file)
>          ...)
>
> - I usually see names with ? after being functions rather than flags.
> (end?)
>
> --Steve
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to