[svn] r6012: nemerle/trunk/ncc/testsuite/positive/yield-tree.n
malekith
svnadmin at nemerle.org
Sat Dec 17 13:38:40 CET 2005
Log:
This doesn't work with 1.1.9.2, does with 1.1.11, don't know about 1.1.10.
Author: malekith
Date: Sat Dec 17 13:38:39 2005
New Revision: 6012
Added:
nemerle/trunk/ncc/testsuite/positive/yield-tree.n
Added: nemerle/trunk/ncc/testsuite/positive/yield-tree.n
==============================================================================
--- (empty file)
+++ nemerle/trunk/ncc/testsuite/positive/yield-tree.n Sat Dec 17 13:38:39 2005
@@ -0,0 +1,37 @@
+#pragma indent
+using System.Collections.Generic
+using System
+
+variant Node['a] : IEnumerable['a] \
+where 'a : IComparable['a]
+ | Elem { l : Node['a]; e : 'a; r : Node['a]; }
+ | Nil
+
+ public GetEnumerator () : IEnumerator['a]
+ match (this)
+ | Elem (l, e, r) =>
+ foreach (x in l) yield x;
+ yield e;
+ foreach (x in r) yield x;
+ | Nil => {}
+
+ public Add (e : 'a) : Node['a]
+ match (this)
+ | Elem (l, e', r) =>
+ def c = e.CompareTo (e');
+ if (c < 0) Elem (l.Add (e), e', r)
+ else if (c > 0) Elem (l, e', r.Add (e))
+ else Elem (l, e', r)
+ | Nil => Elem (Nil (), e, Nil ())
+
+ public static FromList (e : list ['a]) : Node['a]
+ e.FoldLeft (Node.Nil (), fun (e,a) { a.Add (e) })
+
+def n = Node.FromList ([82, 2, 33, 1, 22])
+def n2 = Node.FromList (["ene", "due", "rabe", "chinczyk", "zlapal", "zabe"])
+
+foreach (e in n)
+ System.Console.WriteLine (e)
+
+foreach (e in n2)
+ System.Console.WriteLine (e)
More information about the svn
mailing list