My favorites | Sign in
Project Logo
                
Feeds:

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);








Hosted by Google Code