OP here. I wanted to comment on the discussion around ".NET vs. other things" coversation that has started brewing here. I'm not one to hate on any environment or ecosystem. I do make fun of PHP or Java at times, but it's all good-natured. Not to be too PC, but yes, every thing has its pros and cons.<p>Personally, however, I think C# as a language strikes the right balance in terms of power, ease-of-use, learnability and code readability. Even if you have a problem with Microsoft, I think it is wrong to let your "MS-hate" translate into "C#-hate". It is a beautiful language and the open-source community around it is growing rapidly. The progress made by platform-independent endeavors (case in point Xamarin) is admirable.<p>In the unlikely scenario that all of programming were to converge into one language, I would want it to be an open-source, platform-independent version of C# (with maybe just a tad more constructs borrowed from the functional programming world).<p>P.S. I also think it is a mistake to lump C# and Java in the same bucket. Ten or more years ago, maybe. Today, they are VERY different.
Nice post, if you plan a writing a full featured provider I recommend using the ReLINQ framework: <a href="http://relinq.codeplex.com/" rel="nofollow">http://relinq.codeplex.com/</a><p>I regret I didn't knew about it when I wrote my first LINQ provider.
You can get away with providing your own classes and extension methods. I did that, my colleagues did that (floowing my attempt). We needed a LINQ access to a non-SQL (hypergraph) database, so basic LINQ wouldn't do it.<p>You need to know how to parse function bodies and I strongly suggest algebraic types approach, e.g., using SpecificType v = genericTypedVar as SpecificType and checking if v != null. You have to write your own parametrized type supporting Where, Select, etc.<p>And you're good to go.<p>It took me three days to write first LINQ-like thing.
And just as we were talking about .NET in other environments and Mono and Xamarin, we hear the news about Microsoft in talks to acquire Xamarin. Interesting.