This issue was moved from gna bug tracker, there it was bug 18103 (http://gna.org/bugs/?18103).
Florian Vaussard
The problem is not to return a value to someone, this can be managed using variables.
The concept would be to stop prematurely the execution of the event / subroutine. Like adding an "end" label and jumping to it. Otherwise, you have to declare a completion variable, and test it each time to see if you have to do some other work or not, until the end of the routine...
Stéphane Magnenat
It is not possible to return from event handlers as it is not defined to whom a value should be returned.
It might be possible to implement it for subroutines, but it is not trivial. It is important to note that subroutines are currently not functions, they do not have local scopes. They do have a call stack, but the latter only stores return addresses. But it might be nice to add an optional scalar return value to subroutines, indeed.
Florian Vaussard
The absence of "return" in event handlers / subroutines is really painful.
The structure of one's (real-world) program could be made really more clear with this :-)