I'm not fully convinced of the syntax proposed by Marcus. If the expression contains an assignment it leads to multiple "=" signs that look weird.
In my testing now I see that Pike also supports inline declaration of a variable in a "return" statement. Not sure if this is by accident, but it can create further confusion as seen below.
Before:
int x; int foo() { return x = 17; } // modify global x int bar() { return int x = 17; } // should this be legal btw?
After:
int x; int foo() = x = 17; // looks bad int bar() = int x = 17; // looks worse, and not global x
The use of "=>" at least gives a cleaner separation of the two parts of a definition.