Imagine a time before sliced bread was invented. We had loaves of bread, but no sliced bread. We had sliced cheese and sliced meat but nobody had even conceived of sliced bread. To share some bread I had to rip off a chunk. Messy and uncivilized. And chunks of bread never fit in my toaster. Only the toaster hadn’t been invented yet. Now some clever individual comes along and invents sliced bread. Wow! On hindsight it seems so obvious. Why didn’t I think of that? In fact, why didn’t someone long before me think of that? What a great idea! Now we can make toast, and layer our sliced meat and sliced cheese between two slices of bread. And I can conduct experiments on the orientation buttered bread hits the floor with when it falls. How did we even live without sliced bread before?

That’s how I felt when I discovered LeMP, the ‘lexical macro processor for C#’. People have been writing Lisp macros for decades, and here I am, this poor schmuck, sitting around in my day job writing all this C# boilerplate, and waiting for the next release of C#. Then in my free time in the evening, when I’m not collecting a salary, I’m enjoying elegant, expressive languages. Some of these languages even contain their own macro systems so that I can extend the language as needed. Did I mention that I hardly have any free time in the evenings these days? So I am mostly stuck writing C#, which is an ok language.

So this guy, who will remain anonymous, comes along. Let’s just call him ‘David’. David basically ‘invents’ Lisp style macros in C#. And they work. And with an extension, they integrate with Visual Studio. And now we can make sandwiches with C#. And life will never be the same again. This is so amazing that every developer I mention this to exclaims, ‘Why isn’t Microsoft paying David (his name is not really ‘David’) to work on this and make it part of the official C# language?’ Microsoft — are you listening?

My purpose of writing this isn’t to demonstrate LeMP or provide a tutorial on how to use it. I think I’ll save that for another post. My purpose today is to encourage all C# developers to have a look at LeMP.

Go ahead. Have a look! LeMP Home Page

Now everybody exclaim in unison:

Why isn’t Microsoft paying David to work on this and make it part of the official C# language?

Microsoft — are you listening?

Now, if you feel as I do that we need good ideas like this in the mainstream then give LeMP a try, talk about it with your developer peers, and offer your support.