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/PersistentListIdentityMap.cs | 47 +++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'src/cli/runtime/PersistentListIdentityMap.cs') diff --git a/src/cli/runtime/PersistentListIdentityMap.cs b/src/cli/runtime/PersistentListIdentityMap.cs index 17f0794a..330aeb5b 100644 --- a/src/cli/runtime/PersistentListIdentityMap.cs +++ b/src/cli/runtime/PersistentListIdentityMap.cs @@ -31,7 +31,7 @@ namespace org.clojure.runtime * code duplication here is kind of gross, but most efficient */ - public class PersistentListIdentityMap : IPersistentMap, IMapEntry + public class PersistentListIdentityMap : IPersistentMap, IMapEntry, ISeq, ISequential { static public PersistentListIdentityMap EMPTY = new PersistentListIdentityMap(); @@ -96,6 +96,21 @@ namespace org.clojure.runtime return 0; } + virtual public Object first() + { + return null; + } + + virtual public ISeq rest() + { + return null; + } + + virtual public ISeq seq() + { + return null; + } + internal class Iter : IEnumerator { PersistentListIdentityMap e; @@ -207,6 +222,21 @@ namespace org.clojure.runtime 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 : PersistentListIdentityMap @@ -289,6 +319,21 @@ namespace org.clojure.runtime return count(); } + override public Object first() + { + return this; + } + + override public ISeq rest() + { + return _rest; + } + + override public ISeq seq() + { + return this; + } + PersistentListIdentityMap create(Object k, Object v, IPersistentMap r) { if (r == EMPTY) -- cgit v1.2.3-70-g09d2