That's really a matter of conventions. Both work, and you just have to correctly adjust the call to load :
1st layout : src/echo/test.clj src/echo/test/test-part2.clj Then you'll have (ns echo.test (:load "test/test-part2") in src/echo/test.clj 2d layout: src/echo/test.clj src/echo/test-part2.clj Then you'll have (ns echo.test (:load "test-part2") in src/echo/test.clj But that was not the point of my answer, though. Regards, -- Laurent 2009/2/13 Mark Volkmann <r.mark.volkm...@gmail.com> > > On Fri, Feb 13, 2009 at 10:18 AM, Laurent PETIT <laurent.pe...@gmail.com> > wrote: > > 2009/2/13 Mark Volkmann <r.mark.volkm...@gmail.com> > >> > >> On Thu, Feb 12, 2009 at 5:09 PM, Laurent PETIT <laurent.pe...@gmail.com > > > >> wrote: > >> > In a nutshell (not tested, but nothing should miss, just typos if it > >> > doesn't > >> > work) : > >> > > >> > mkdir test-compile > >> > cd test-compile > >> > mkdir classes > >> > mkdir src > >> > mkdir src/echo > >> > echo "(ns echo.test) (defn echo [msg] msg)" > src/echo/test.clj > >> > java -cp path/to/clojure.jar:src/:classes/ clojure.lang.Repl > >> > user> (compile 'echo.test) > >> > echo.test > >> > user> (echo.test/echo "ECHHHOOOO!!!") > >> > ECHHHOOOO!!! > >> > user> > >> > > >> > A classical error is to forget to put the classes/ folder in the > >> > classpath. > >> > This folder (as defined by default by the global var *compile-path*) > is > >> > where clojure generates the class files, and where it the immediately > >> > tries > >> > to load them from : so it must be on the classpath. > >> > >> The steps above work for me. > >> > >> What if I have several source files with the namespace "echo.test"? > >> Where do I need to put those so that all of them are compiled when I > >> run (compile 'echo.test)? Do they need to be named specially? Maybe > >> what I'm trying to do isn't possible. > > > > Hello, > > > > Normally, just one of those file will have the (ns ). Others will just be > > (load)ed from the ns-defining file (the one with the (ns)), and contain > just > > (in-ns 'echo.test) at their top. > > Ah ... I think I've seen this before. Is it a common convention to > create a directory in the same location as the main source file with > the same name as that source file and place the additional source > files inside it? For example, you have src/echo/test.clj. Would you > create the directory src/echo/test and put additional source files > that have the same namespace in that directory? > > > Then, just sending (compile 'echo.test) will compile everything. > > > > It's now that things get a little bit much complicated. Currently, if you > > just modify a secondary file of ns echo.test , then sending (compile > > 'echo.test) will not work, because the ns-defining file has not been > > modified, and so it will not be recompiled (because recompilation of the > > secondary file of ns echo.test is a side-effect of calling 'compile on > the > > ns-defining file). > > > > The current solution to this problem in clojuredev is a brute-force one : > > 'touch all files to be sure that everything gets recompiled. > > > > There is currently a discussion on providing this behaviour in a cleaner > way > > by using a global var or :reload-all flag to (compile). > > Using it, you will be sure that by calling (compile 'echo.test > :reload-all > > true) on a namespace/lib, all the files being part of the ns will be > > recompiled, and you will not have to use 'touch trick anymore. > > Thanks for explaining that! > > -- > R. Mark Volkmann > Object Computing, Inc. > > > > --~--~---------~--~----~------------~-------~--~----~ 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 clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---