Anonymous delegates are used extensively in C#. Can you imagine Linq without anonymous delegates?
No matter if an anonymous delegate is defined using "delegate" keyword or as a lambda expression, the delegate does not have any "name" you could use to reference it elsewhere. And frankly, there's no point for an anonymous delegate to have a name ... or maybe there is?
Your goal is to be able to define recursive anonymous delegate in a single expression, so for example you can use such recursive anonymous delegate in Linq.
Specifically, following code should compile and produce a result according to the specification: