[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