diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/APersistentMap.java | 9 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 9 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/APersistentMap.java b/src/jvm/clojure/lang/APersistentMap.java index 664d27ca..f62b5aa3 100644 --- a/src/jvm/clojure/lang/APersistentMap.java +++ b/src/jvm/clojure/lang/APersistentMap.java @@ -11,6 +11,7 @@ package clojure.lang;
import java.util.Collection;
+import java.util.Map;
public abstract class APersistentMap extends AFn implements IPersistentMap, Collection{
int _hash = -1;
@@ -29,7 +30,13 @@ public String toString(){ }
public IPersistentCollection cons(Object o){
- if(o instanceof IPersistentVector)
+ if(o instanceof Map.Entry)
+ {
+ Map.Entry e = (Map.Entry) o;
+
+ return assoc(e.getKey(), e.getValue());
+ }
+ else if(o instanceof IPersistentVector)
{
IPersistentVector v = (IPersistentVector) o;
if(v.count() != 2)
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 1b8b4f56..74bc58d5 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -265,7 +265,7 @@ public static void loadResourceScript(String name) throws Exception{ InputStream ins = RT.class.getResourceAsStream("/" + name); if(ins != null) { - Compiler.load(new InputStreamReader(ins), RT.class.getResource("/"+name).toString(), name); + Compiler.load(new InputStreamReader(ins), RT.class.getResource("/" + name).toString(), name); ins.close(); } } @@ -519,6 +519,13 @@ static public Object contains(Object coll, Object key){ static public Object find(Object coll, Object key){ if(coll == null) return null; + else if(coll instanceof Map) + { + Map m = (Map) coll; + if(m.containsKey(key)) + return new MapEntry(key, m.get(key)); + return null; + } return ((Associative) coll).entryAt(key); } |