public static void Test() { List <int> list = new List <int>() { 1, 2, 3, 4 }; ListHKT <int> listHKT = new ListHKT <int>(list); ListF listFunctor = new ListF(); ListHKT <double> mappedListHKT = (ListHKT <double>)listFunctor.Map(x => x + 1.5, listHKT); List <double> mappedList = mappedListHKT.value; foreach (var ele in mappedList) { Console.Write(ele + " "); } // 2.5 3.5 4.5 5.5 Console.WriteLine(); List <double> list2 = ((ListHKT <double>) new ListF().Map(x => x + 1.5, new ListHKT <int>( new List <int>() { 1, 2, 3, 4 }))).value; foreach (var ele in list2) { Console.Write(ele + " "); } //ListHKT<int> listHKT = new List<int>() { 1, 2, 3, 4 }; //List<double> mappedList = (ListHKT<double>)new ListF().Map(x => x + 1.5, listHKT); }
public static void Test() { ListM listM = new ListM(); ListHKT <int> pureHKT = (ListHKT <int>)listM.Pure(42, 10007); List <int> pure = pureHKT.value; foreach (var ele in pure) { Console.Write(ele + " "); } // 42 10007 Console.WriteLine(); List <int> list = new List <int>() { 1, 2, 3, 4 }; ListHKT <int> listHKT = new ListHKT <int>(list); ListHKT <double> flatMappedListHKT = (ListHKT <double>)listM.FlatMap(listHKT, v => listM.Pure(v + 0.5, v + 1.5)); List <double> flatMappedList = flatMappedListHKT.value; foreach (var ele in flatMappedList) { Console.Write(ele + " "); } // 1.5 2.5 2.5 3.5 3.5 4.5 4.5 5.5 Console.WriteLine(); }