|
Project Information
|
Kinet is a library for C# that provides useful data structures and algorithms for general purpose programming. It is somewhat inspired by the Functional Java project and the Haskell programming language. Compilable Usage ExamplesSnippetsThe List monad using LINQvar a = List<int>.list(1, 3, 5, 5, 100, 671392);
var b = from i in a select i * 10;
var c = from i in a
from j in List<string>.list("a", "b", "c")
select Tuple2<int, string>.tuple2(i, j);
var d = from i in c
where i.a > 10 || i.b == "b"
select i;
var si = Show<int>.AnyShow();
var se = si.IEnumerableShow;
var ste = si.Tuple2Show<string>(Show<string>.AnyShow()).IEnumerableShow;
/*
[1,3,5,5,100,671392]
[10,30,50,50,1000,6713920]
[(1,a),(1,b),(1,c),(3,a),(3,b),(3,c),(5,a),(5,b),(5,c),(5,a),(5,b),(5,c),(100,a),(100,b),(100,c),(671392,a),(671392,b),(671392,c)]
[(1,b),(3,b),(5,b),(5,b),(100,a),(100,b),(100,c),(671392,a),(671392,b),(671392,c)]
*/
se.Println(a);
se.Println(b);
ste.Println(c);
ste.Println(d);The Func monad using LINQFunc<int, bool> t = n => n > 10;
Func<int, string> u = n => (n - 1).ToString();
Func<int, string> v = n => (n * 5).ToString();
var a = from tt in t
from uu in u
from vv in v
select tt ? uu : vv;
var b = from k in List<int>.list(9, 10, 11, 5, 20)
select a(k);
var s = Show<string>.AnyShow().IEnumerableShow;
// [45,50,10,25,19]
s.Println(b);
|