diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-06-21 14:12:21 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-06-21 14:12:21 +0000 |
commit | 3b7c161286fd469857ff66013f785bef742e3b07 (patch) | |
tree | b9ce6771a82fb75b4f5a647856a42f2bac096ed3 | |
parent | ff6e9a5e045b02352736048b0cf874b3fffd998f (diff) |
added notFound optional arg for keywords as fns and maps as fns, and enabled Symbols as fns
-rw-r--r-- | src/jvm/clojure/lang/APersistentMap.java | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Keyword.java | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Symbol.java | 10 |
3 files changed, 15 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/APersistentMap.java b/src/jvm/clojure/lang/APersistentMap.java index 8915f822..7df69862 100644 --- a/src/jvm/clojure/lang/APersistentMap.java +++ b/src/jvm/clojure/lang/APersistentMap.java @@ -154,6 +154,10 @@ public Object invoke(Object arg1) throws Exception{ return valAt(arg1);
}
+public Object invoke(Object arg1, Object notFound) throws Exception{
+ return valAt(arg1, notFound);
+}
+
// java.util.Collection implementation
public Object[] toArray(){
diff --git a/src/jvm/clojure/lang/Keyword.java b/src/jvm/clojure/lang/Keyword.java index d3fdb129..39d077ec 100644 --- a/src/jvm/clojure/lang/Keyword.java +++ b/src/jvm/clojure/lang/Keyword.java @@ -79,8 +79,8 @@ public Object invoke(Object obj) throws Exception{ return RT.get(obj, this); } -public Object invoke(Object obj, Object val) throws Exception{ - return throwArity(); +public Object invoke(Object obj, Object notFound) throws Exception{ + return RT.get(obj, this, notFound); } public Object invoke(Object arg1, Object arg2, Object arg3) throws Exception{ diff --git a/src/jvm/clojure/lang/Symbol.java b/src/jvm/clojure/lang/Symbol.java index acc5ca2f..a7bbef92 100644 --- a/src/jvm/clojure/lang/Symbol.java +++ b/src/jvm/clojure/lang/Symbol.java @@ -16,7 +16,7 @@ import java.io.Serializable; import java.io.ObjectStreamException; -public class Symbol extends Obj implements Comparable, Named, Serializable{ +public class Symbol extends AFn implements Comparable, Named, Serializable{ //these must be interned strings! final String ns; final String name; @@ -110,4 +110,12 @@ private Object readResolve() throws ObjectStreamException{ return intern(ns, name); } +public Object invoke(Object obj) throws Exception{ + return RT.get(obj, this); +} + +public Object invoke(Object obj, Object notFound) throws Exception{ + return RT.get(obj, this, notFound); +} + } |