From e4e5b0612f3acbcd223e8a7c27510bf9a2dde856 Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Fri, 9 Jun 2006 13:14:02 +0000 Subject: made ISequential --- src/cli/runtime/PersistentListMap.cs | 48 +++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'src/cli/runtime/PersistentListMap.cs') 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) -- cgit v1.2.3-70-g09d2