The PL geek in me really likes this nice demonstration of the power of higher order functions, as opposed to C-style for loops, when it comes to getting things done.
LINQ is incredibly awesome, expressive, and powerful. I generally prefer the lambda syntax to the more verbal syntax the author has used here, but both are really great and miles ahead of what's available in other, similar languages.
However don't let the seemingly chained methods fool you! The great thing about LINQ is that is defers execution, by building an expression tree , meaning the code is lazily executed only when needed. And the expression tree means that everything (filtering, projection etc) is done in a single for loop . e.g.
var results = collection.Select(item => item.Foo).Where(foo => foo < 3);
Wikipedia explains it better than I could http://en.wikipedia.org/wiki/Higher-order_function
The monadic interfaces can get much more powerful, such as the Logic Monad in Haskell which embeds Prolog-like search.
- Can't be seeded.
- Fails to use all possible outputs in range.
- Causes philosophical thoughts.
Ce n'est pas une grosse surprise de trouver des gens de wc3c sur HN parce que les deux sont des communautés de programmeurs.