Hi all,

why does the existance of a namespace not suffice to use or require it?
Currently, with clojure 1.3, it has to be associated with a class or
clojure file.

Here's a simple example REPL session:

--8<---------------cut here---------------start------------->8---
user> (ns test)
nil
test> (defn foo [x] (+ 2 x))
#'test/foo
test> (in-ns 'user)
#<Namespace user>
user> (test/foo 2)
4
user> (find-ns 'test)          ;; finding works
#<Namespace test>
user> (use 'test)              ;; using doesn't work
Could not locate test__init.class or test.clj on classpath: 
  [Thrown class java.io.FileNotFoundException]
; Evaluation aborted
user> (require '[test :as t])  ;; neither does requiring
Could not locate test__init.class or test.clj on classpath: 
  [Thrown class java.io.FileNotFoundException]
; Evaluation aborted
user> (refer 'test)            ;; referring does work
nil
user> (foo 2)
4
--8<---------------cut here---------------end--------------->8---

So while I can't use or require it, I can refer it.  However, what I
really want to do is to require it with some short alias.
Unfortunately, refer doesn't support an :as option.

Why I think I need that: I'm playing around with core.logic, and there I
generate relations (defrel, which in the end defines a Var with def)
from some spec I get at runtime.  In order not to clutter *ns*, I do
that in some new namespace by generating some do-form with ns and tons
of defrels, and then evaling that.

After the relations are there, I want to populate them with facts.
Since there can be many fact bases for the relations, I use another
namespace.  In that, I want to easily access the relations using some
prefix, as (require 'foo :as 'f) would allow.  I can't really refer that
namespace, because it's highly likely that some relation names clash
with clojure.core defs.

For the time being, I've changed my code a bit to prefix all relations
with a +, but artificial prefixing is just not right if you have
namespaces...

Bye,
Tassilo
-- 
(What the world needs (I think) is not
      (a Lisp (with fewer parentheses))
      but (an English (with more.)))
Brian Hayes, http://tinyurl.com/3y9l2kf

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