One of the most surprising and useful things I’ve learned about .NET this year is that it has quite good support for monads as of .NET 3.5 (it’s just missing higher-order polymorphism). What’s more, for those allergic to monads, you don’t need to understand anything in that previous sentence to follow this post. :)
In this post we’ll implement the couple of functions necessary to be able to compose instances of
Lazy<T> together in interesting ways using LINQ and LINQ comprehensions.