public static std_core._list <A> VList <A>(A[] v, std_core._list <A> tail) { std_core._list <A> xs = tail; for (int i = v.Length - 1; i >= 0; i--) { xs = new std_core._list <A>(v[i], xs); } return(xs); }
public static string ListToString(std_core._list <int> xs) { StringBuilder sb = new StringBuilder(); while (xs != std_core._list <int> .Nil_) { sb.Append(CharToString(xs.head)); xs = xs.tail; } return(sb.ToString()); }
public static std_core._list <int> StringToList(string s) { std_core._list <int> xs = std_core._list <int> .Nil_; for (int i = s.Length - 1; i >= 0; i--) { if (Char.IsLowSurrogate(s[i]) && i > 0) { i--; } xs = new std_core._list <int>(Char.ConvertToUtf32(s, i), xs); } return(xs); }
public static A[] UnVList <A>(std_core._list <A> xs) { int len = 0; std_core._list <A> acc = xs; while (acc != std_core._list <A> .Nil_) { len++; acc = acc.tail; } A[] v = new A[len]; acc = xs; for (int i = 0; i < len; i++) { v[i] = acc.head; acc = acc.tail; } return(v); }