diff options
-rw-r--r-- | src/org/clojure/runtime/Namespace.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/org/clojure/runtime/Namespace.java b/src/org/clojure/runtime/Namespace.java index d755cd89..b09adbad 100644 --- a/src/org/clojure/runtime/Namespace.java +++ b/src/org/clojure/runtime/Namespace.java @@ -27,9 +27,21 @@ static final public HashMap table = new HashMap(); final public HashMap symbols = new HashMap(); final public String name; +static final public Namespace globalNS = new Namespace(""); +static final public Namespace keywordNS = new Namespace("keyword"){ + public Symbol intern(String name) + { + Symbol sym = (Symbol) symbols.get(name); + if(sym == null) + symbols.put(name, sym = new Keyword(name, this)); + return sym; + } +}; + Namespace(String name) { this.name = name; + table.put(name, this); } static public Namespace find(String name) @@ -43,7 +55,7 @@ static public Namespace findOrCreate(String name) { Namespace ns = find(name); if(ns == null) - table.put(name, ns = new Namespace(name)); + ns = new Namespace(name); return ns; } } @@ -52,7 +64,7 @@ public Symbol intern(String name) { synchronized(symbols) { - Symbol sym = (Symbol) symbols.get(name); + Symbol sym = (Symbol) symbols.get(name); if(sym == null) symbols.put(name, sym = new Symbol(name, this)); return sym; |