public static ImList <T> Tail <T>(ImList <T> list) { var lst = list.GetList(); lst.RemoveAt(0); return(new ImList <T>(lst)); }
public static ImList <T> Sort <T>(ImList <T> list) { var lst = list.GetList(); lst.Sort(); return(new ImList <T>(lst)); }
public static void Each <T>(Action <T> iterator, ImList <T> list) { var lst = list.GetList(); foreach (T item in lst) { iterator(item); } }
public static R Fold <T, R>(Func <R, T, R> iterator, R initialValue, ImList <T> list) { var lst = list.GetList(); var acc = initialValue; foreach (T item in lst) { acc = iterator(acc, item); } return(acc); }
public static ImList <T> Replace <T>(Func <T, bool> predicate, T newItem, ImList <T> list) { for (int x = 0; x < list.Count; x++) { if (predicate(list[x])) { var lst = list.GetList(); lst[x] = newItem; return(new ImList <T>(lst)); } } return(list + newItem); }
public static T Find <T>(Func <T, bool> iterator, ImList <T> list) { var lst = list.GetList(); foreach (T item in lst) { if (iterator(item)) { return(item); } } return(default(T)); }