Instead, how bout a simpler syntax. This is just an idea, could be improved
void Recurse() { scope(first) { `BLOCK` } scope(last) { `BLOCK` } Recurse(); } which would be equivalent to void Recurse2() { Recurse2(); } void Recurse() { `BLOCK` Recurse2(); `BLOCK` } doubling of functions starts to create a source mess.