Don Box points to the new support for lambda expressions in C#:
Expression<Func<int, int>> expr = a => a + 3;
Console.WriteLine(expr); // prints "a => Add(a, 3)"
Func<int, int>
func = expr.Compile(); // LCG's an MSIL method from the expr Console.WriteLine(func(4)); // prints "7"
Yes, it's nice that Microsoft has added this to C# - it gets them up to Lisp and Smalltalk levels of technology, only a few decades late :)
Personally, I find the following easier to look at:
expression := [:input | input + 3].
Transcript show: expression method getSource; cr.
Transcript show: (expression value: 4) printString; cr.
You don't have the separate compile step, because of the way Smalltalk works. What's also neat is this:
That's the block expression being inspected, with the bytecode highlighted. In Smalltalk, it's turtles all the way down.