Hacker News new | past | comments | ask | show | jobs | submit login

There are several departures from Smalltalk’s syntax and semantics. The most notable of these are: no explicit returns, 0-based indexing, no metaclass hierarchy, special syntax for instance variables.

I can live with no metaclasses. Special syntax for instance variables isn't that much of a problem. 0-based indexing -- this should be easy to take care of with your own collection classes.

However, no explicit returns -- this one kills me.

I guess this has to do with Javascript.

EDIT: JS has exception handling, so this could be used to implement explicit returns.




I suggest some relization of explicit conditional return for Clamato: http://sites.google.com/site/abbatfilestore/clamato/cookbook...

Also, please join to Clamato google group: http://groups.google.com/group/clamato-smalltalk/


The problem with using exception handling for explicit returns is that you'd need to put a try/catch block at the top level of every function. That seems yuck. Or am I missing something?


Exactly. For those times that you really need them, I added a #return: method that you can use explicitly:

self return: [:ret | .... ret value: foo ...].

But you only pay the cost of the try/catch/throw when you actually use it.

FWIW, I've found that the lack of explicit returns really isn't a problem, at least in the code I've written and ported so far.


I've been offline for a few days and just read this:

But you only pay the cost of the try/catch/throw when you actually use it.

Do you mean that the existence of an explicit return is recognized at compile time, so only the functions that actually contain one need to be wrapped in a try-catch? Now that I think of it, that seems like the best way to do it. I've wanted to be able to compile return-from into JS for a while...


I was thinking of the compiler doing it for me. I'm not interested in writing new code. I'm interested in porting a lot of old code. It would be best if I could get it to "just work" modulo an automated translation.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: