In the presence of macros, it's best to think "Lisp compilation = evaluation of all forms". So, you do two things at the same time: (1) accumulate object code to be output as the result of the compilation and (2) actually execute the programme, so that you can call functions and examine variables when doing macro expansion etc. The Clojure compiler works this way -- for a demonstration, just have it compile a file with a println at top level.
That's the rough idea, anyway; I gather that Christian Queinnec's "Lisp in Small Pieces" [1] is the definitive book on the subject, so perhaps that would be more helpful to you. (Regrettably, I haven't yet read that one, although it's definitely on my list as one of the as-yet unread Lisp classics!) Sincerely, Michał -- 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