summaryrefslogtreecommitdiff
path: root/src/cli/runtime/PersistentListMap.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli/runtime/PersistentListMap.cs')
-rw-r--r--src/cli/runtime/PersistentListMap.cs48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/cli/runtime/PersistentListMap.cs b/src/cli/runtime/PersistentListMap.cs
index fa7b3874..8f53d0db 100644
--- a/src/cli/runtime/PersistentListMap.cs
+++ b/src/cli/runtime/PersistentListMap.cs
@@ -27,7 +27,7 @@ namespace org.clojure.runtime
*
* null keys and values are ok, but you won't be able to distinguish a null value via get - use contains/find
*/
-public class PersistentListMap : IPersistentMap, IMapEntry
+public class PersistentListMap : IPersistentMap, IMapEntry, ISeq, ISequential
{
static public PersistentListMap EMPTY = new PersistentListMap();
@@ -80,6 +80,22 @@ public virtual int capacity(){
return 0;
}
+virtual public Object first()
+ {
+ return null;
+ }
+
+virtual public ISeq rest()
+ {
+ return null;
+ }
+
+virtual public ISeq seq()
+ {
+ return null;
+ }
+
+
internal class Iter : IEnumerator{
PersistentListMap e;
bool first = true;
@@ -185,6 +201,21 @@ internal class Tail : PersistentListMap {
return EMPTY;
return this;
}
+
+ override public Object first()
+ {
+ return this;
+ }
+
+ override public ISeq rest()
+ {
+ return null;
+ }
+
+ override public ISeq seq()
+ {
+ return this;
+ }
}
internal class Link : PersistentListMap {
@@ -257,6 +288,21 @@ internal class Link : PersistentListMap {
return count();
}
+ override public Object first()
+ {
+ return this;
+ }
+
+ override public ISeq rest()
+ {
+ return _rest;
+ }
+
+ override public ISeq seq()
+ {
+ return this;
+ }
+
PersistentListMap create(Object k, Object v, IPersistentMap r)
{
if(r == EMPTY)