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

Reply via email to