static List <A> FromArray <A>(params A[] a) { List <A> l = new Nil <A>(); for (int i = a.Length - 1; i >= 0; i--) { l = new Cons <A>(a[i], l); } return(l); }
bool Eq <List <A> > .Equals(List <A> a, List <A> b) { Nil <A> an = a as Nil <A>; if (an != null) { Nil <A> ab = b as Nil <A>; return(b != null); } ; Cons <A> ac = a as Cons <A>; if (ac != null) { Cons <A> bc = b as Cons <A>; return(bc != null && Overloads.Eq <EqA, A>(ac.h, bc.h) && Overloads.Eq <EqList <EqA, A>, List <A> >(ac.t, bc.t)); } return(b == null); }