I've followed the directions at
http://java.ociweb.com/mark/clojure/article.html#Compiling to compile
a simple clojure app.  In my base directory, I have a dir called
classes, and another called src.  I am attempting to follow Richard
Newman's advice in the thread called "newbie question: splitting up
source files", by having one namespace dedicated to each source file.

;;;; src/foo/main.clj
(ns foo.main (:gen-class) (:use foo.util))

(defn a [caller]
  (println (str "a called by: " caller)))

(defn -main [greetee]
  (println (str "Hello " greetee "!"))
  (a "-main")
  (b "-main"))

;;;; src/foo/util.clj
(ns foo.util (:use foo.main))

(defn b [caller]
  (println (str "b called by: " caller))
  ; the following line won't compile, throws
  ; java.lang.Exception: Unable to resolve symbol: a in this context
  (a "b")
)

Then I do:

    java -cp src;classes;lib/clojure.jar clojure.main compile.clj

which invokes "(compile 'foo.main)".  I then get "java.lang.Exception:
Unable to resolve symbol: a in this context".  How can I set up my
project so that from any given namespace, I can call functions from
any other namespace in the project?  Note that if I comment out the
offending line, my app compiles and runs just fine when I invoke e.g.:

    java -cp classes;lib/clojure.jar foo.main abcdef

Can anyone straighten me out?

Another thing I've noticed is that even during compilation, the order
that functions are definied in a source file matter.  That makes sense
to me when a clj file is run as a script, but when clojure code is
getting compiled, why should it matter which order things are defined
in?  Is this behavior related somehow to my compilation error?

Thanks, Mike

-- 
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