"Meikel Brandmeyer (kotarak)" <m...@kotka.de> writes: > you are right. require-owl also works as a function: > > (defn require-owl > [file & {nspace :namespace :or {nspace *ns*}}] > (with-open [rdr (io/reader file)] > (doseq [entry (owl-seq rdr) > :let [entry-name (translate-name (:name entry))]] > (intern nspace entry-name (:init entry)) > (alter-meta! (ns-resolve nspace entry-name) assoc :owl true)) > > This should work as before. I think the important part for your question is > actually the ns-resolve to fix the tests.
Nope that fails as well. intern already returns the var, so there is no point looking it up with ns-resolve And because you've used intern, this will still fail in the original case I was complaining about... (do (require-owl "bob.owl") bob) (where bob is defined by the require-owl) unless the `do` is a top-level. (do (require-owl "bob.owl") (var-get (ns-resolve 'bob 'bob))) would work. See, it's counter-intuitive isn't it? I've tried this backwards and forwards now. intern is much better when you don't know the symbol at compile-time because the first parameter evals, unlike def, but then you get these random compilation failures. AFAICT, this is an inevitable outcome of Clojure's non-interning compiler. At least, I think that the documentation of intern, do and defn needs to be updated, even if it is an edge-case. Phil -- -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.