public Locator( ImMap <string, ImMap <string, LocatorTarget> > registrationList, ImList <LocatorPlug> plugs ) { RegistrationList = registrationList; Plugs = plugs; }
public static ImList <T> AddNew <T>(T item, ImList <T> list) { if (list.Has(item)) { return(list); } return(list + item); }
public static R Maybe <T, R>(Func <T, R> action, T item, R def, ImList <T> list) { if (list.Has(item)) { return(action(item)); } return(def); }
public static ImList <T> Transform <T>(Func <T, T> iterator, ImList <T> list) { var transformedList = Im.Fold <T, List <T> >((List <T> acc, T item) => { acc.Insert(0, iterator(item)); return(acc); }, new List <T>(), list); return(new ImList <T>(transformedList)); }
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)); }
public static T Last <T>(ImList <T> list) { var count = list.Count; return(list[count - 1]); }
public static T Head <T>(ImList <T> list) { return(list[0]); }
public static Func <ImList <T>, ImList <T> > Overlay <T>(Func <T, T, bool> predicate, ImList <T> list1) { return(Curry <Func <T, T, bool>, ImList <T>, ImList <T>, ImList <T> > .New(Overlay)(predicate)(list1)); }
public static ImList <T> Overlay <T>(Func <T, T, bool> predicate, ImList <T> list1, ImList <T> list2) { return(Fold((acc, item) => Replace((item1) => predicate(item1, item), item, acc), list1, list2)); }
public static ImList <T> Uniq <T>(ImList <T> list) { return(Fold((acc, item) => AddNew(item, acc), new ImList <T>(), list)); }
public static bool Has <T>(T item, ImList <T> list) { return(list.Has(item)); }