Hi All -

I am trying to create a quick and dirty to import all java classes in
a directory tree (i.e. - the classes directory)

I am able to create the import statements and was thinking of using
eval to execute the import. However I cannot get this to work.

key line is:

        (eval (str "(import '(" p " "(. s replace ".class" "") "))"))

which would evaluate to


I have tried using both the above as well as

        (eval (read-string (str "(import '(" p " "(. s replace ".class" "")
"))")))

and basically nothing happens.

The 3 questions are:

1.  What am I doing wrong?
2.  While researching this, people seem to think that eval should not
be used, and that a macro would be preferable. I am a newbie and have
not gotten the macro thing down :) bout would appreciate some advice
on this , and how it would be accomplished...
3.  I am *very* new at this and would appreciate some ideas as to how
this would be more appropriate (i.e. more idiomatic clojure).  I tried
using a recur statement rather than the final recursive call, but got
an error : java.lang.UnsupportedOperationException: Can only recur
from tail position (test.clj:52).  I am assuming that the doseq
statement is the culprit for this...




(def dir (File. "PATH_TO_CLASSES_FOLDER"))

(defn import-package [f & pkg]
   (let [p (cond (empty? pkg) nil
           (.startsWith (first pkg) ".") (.substring (first pkg) 1)
           :else (first pkg))]
   (doseq [x  (filter #(or (.isDirectory %) (.contains (.getName %)
".class")) (. f listFiles))]
        (let [s (.getName x)]
           (if (.isFile x)
                (eval (str "(import '(" p " "(. s replace ".class" "") "))"))
                (import-package x (str p "." s)))))))

(import-package dir)

Finally - the clojure community is seriously amazing.  I have never
seen such helpful and friendly people as on these boards. Hats off to
all...

Thanks

Base

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to