2010-04-06 Jb Evain <jbevain@novell.com>
[mcs.git] / tests / gtest-176.cs
blob2ed565958c49741938b46d5c1c7b581f4179d1e9
1 class lis<a> {}
3 abstract class fn <a,b,r> {
4 public abstract r apply (a x,b y);
7 class fn1<a> : fn <lis<a>,lis<a>,lis<a>>
9 public override lis<a> apply (lis<a> x,lis<a> y)
11 return M.RevAppend (x,y);
15 class M {
16 public static b FoldLeft<a, b> (a x, b acc, fn<a, b, b> f)
18 return f.apply (x, acc);
21 public static lis<a> RevAppend<a> (lis <a> x , lis <a> y) {
22 return x;
25 public static lis <lis <a>> Concat<a> (lis <lis <a>> l)
27 return FoldLeft<lis<lis<a>>, lis<lis<a>>> (l, new lis<lis<a>> (), new
28 fn1<lis<a>> ());
31 public static void Main ()
33 M.Concat (new lis<lis<string>> ());