Avi posted an interesting reflection on Clamato's lack of explicit returns
[1]:

I *think* I like having left out explicit returns and implicitly
> returning self, in favor of implcitly returning the value of the last
> statement. It unifies methods and blocks in a way I find pleasing.
> However, my hand was somewhat forced here by Javascript semantics.
> The only way to implement them (that I can think of) would be to throw
> an exception, which would get caught and rethrown at every level up
> the stack frame until it found the right one.  I don't want to do this
> to the poor VM.  I've provided a "self return: [:returnBlock | ...]"
> primitive that provides this when you really need it, but I've found
> it's rarely used.


[1]
http://lists.squeakfoundation.org/pipermail/squeak-dev/2009-September/139196.html

On 15 September 2011 07:01, Stéphane Ducasse <[email protected]>wrote:

> Hi
>
> this is early (at least to me) and I was asking myself a probably stupid
> question. But I would like to get your smart answers :)
>
> does a smalltalk like language really need explicit return in []?
>
> Q1 When are they absolutely required?
> Q2 What replacing mechanisms would be needed?
> Q3 What would we gain from an implementation stand point?
> It seems that in resilience lars removed them and more.
>
> Stef
>
> for Q1 I see
>
> foo
>        x isZero ifTrue: [^ 33].
>        self continue
>

Reply via email to