summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-06-21 14:12:21 +0000
committerRich Hickey <richhickey@gmail.com>2008-06-21 14:12:21 +0000
commit3b7c161286fd469857ff66013f785bef742e3b07 (patch)
treeb9ce6771a82fb75b4f5a647856a42f2bac096ed3
parentff6e9a5e045b02352736048b0cf874b3fffd998f (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.java4
-rw-r--r--src/jvm/clojure/lang/Keyword.java4
-rw-r--r--src/jvm/clojure/lang/Symbol.java10
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);
+}
+
}