> (:1 Should the clojure source files intermingle with the java source files,
> each according to it's relavance to the problem, or should there be a top
> level separation between them?)

IMO, they should be separated. Since the project was started with Java
I'd continue treating it as the top-level.

> (:2 Say I have this:
>     English.java --- which defines some cool data structure
> representing English sentences
>     Chinese.java --- same as above except for Chinese.
>     awesome-junk.clj --- which provides unthinkably cool AI functions
> that map English objects to Chinese objects. This is AOT compiled so
> other things can use it.
>     PainstakinglyMadeGUI.java --- which provides an awesome GUI that
> uses the English and Chinese objects and calls the functions provided
> by awesome-junk.
>
> Now, how can I build this project from nothing!?

In the Java sources you can provide one or more java interfaces that
describe the call contracts for awesome-junk.clj (IAwesomeJunk). All
your Java code will depend on this interface and can be built first.

Then you implement that interface in Clojure using gen-class or
deftype/defrecord - which ever suits your needs best. These Clojure
sources are built second and depend on the generated class files from
your Java sources.

Now at runtime, you can create an instead of the Clojure
implementation of IAwesomeJunk and pass that to the Java classes that
depend on it's functionality. A dependency injection framework makes
this pretty simple but might be too heavy for what you need.

So to summarize, IMO your build would have the following phases:

1. Compile Java Sources
2. Compile Clojure Sources (with step 1's classes available)

You probably have even more options with defprotocol but I am not
familiar enough.

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