My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members

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 Examples


Snippets

The List monad using LINQ

var 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 LINQ

Func<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);
Powered by Google Project Hosting