Merge pull request #4998 from kumpera/fix_56684
[mono.git] / mcs / tests / gtest-176.cs
1 class lis<a> {}
2
3 abstract class fn <a,b,r> {
4   public abstract r apply (a x,b y);
5 }
6
7 class fn1<a> : fn <lis<a>,lis<a>,lis<a>>
8 {
9   public override lis<a> apply (lis<a> x,lis<a> y)
10   {
11     return M.RevAppend (x,y);
12   }
13 }
14
15 class M {
16     public static b FoldLeft<a, b> (a x, b acc, fn<a, b, b> f)
17     {
18         return f.apply (x, acc);
19     }
20
21     public static lis<a> RevAppend<a> (lis <a> x , lis <a> y)  {
22       return x;
23     }
24
25     public static lis <lis <a>> Concat<a> (lis <lis <a>> l)
26     {
27       return FoldLeft<lis<lis<a>>, lis<lis<a>>> (l, new lis<lis<a>> (), new
28 fn1<lis<a>> ());
29     }
30
31         public static void Main ()
32         {
33           M.Concat (new lis<lis<string>> ());
34         }
35 }