using System; using System.Collections; using System.Collections.Generic; def dump[T](values : IEnumerable[T]) { foreach(val in values) Console.WriteLine(val.ToString()); } def dump2(values : IEnumerable) { foreach(val in values) Console.WriteLine(val.ToString()); } def dump3[T](values : IList [T]) { foreach(val in values) Console.WriteLine(val.ToString()); } def dump4(values : ICollection) { foreach(val in values) Console.WriteLine(val.ToString()); } def dump5[T](values : ICollection [T]) { foreach(val in values) Console.WriteLine(val.ToString()); } def append_sep['a] (f : 'a -> void, x : 'a) { f (x); Console.WriteLine ("---"); } def clone (values : ICloneable) { def valuesc = values.Clone () :> array [int]; def valuesa = values :> array [int]; assert (valuesa.Length == valuesc.Length); foreach (i in $[0..valuesc.Length-1]) assert (valuesc[i] == valuesa[i]); } def values = array[1, 2, 3]; dump (values); append_sep (dump2, values); append_sep (dump3, values); append_sep (dump4, values); append_sep (dump5, values); clone (values); /* BEGIN-OUTPUT 1 2 3 1 2 3 --- 1 2 3 --- 1 2 3 --- 1 2 3 --- END-OUTPUT */