Expression closures - use-cases for shortcut lambda syntax (blocks)

Bob Ippolito bob at redivi.com
Sat Mar 17 12:55:41 PDT 2007


On 3/17/07, Vassily Gavrilyak <gavrilyak at gmail.com> wrote:
> > addLoadEvent(function(){
> >      connect('bad_example','onclick', \(e) signal('bad_example'));
> >      connect('bad_example','showvalue',window,'alert');
> >
> >      connect('good_example','onclick', \(e) signal(randomObj));
> >      connect(randomObj,'showvalue',window,'alert');
> > });
> >
>
> Actually it should be this, with operator, functions expressions,
> types and lambda
>
> addLoadEvent(function(){
>    bad_example.onclick   += (\ _)  bad_example.showvalue("explicit_value");
>    bad_example.showvalue += (\ s:String) window.alert(s);
>    good_example.onclick  += (\ _)  randomObj.showvalue("explicit_value");
>    randomObj.showvalue   += (\ s:String) window.alert(s);
> });
>
> Now it's cleared from all the syntactic noise.
> Signal-slot framework in ES is something strange that should not be here at all.
> ES object properties are slots and functions calls are signals.
> Connection should be an assignment. ES is not C++, there is no needs
> for workarounds
> Thats the first thing bad with this example.
> Second thing is that is uses method names in order to actually shorten
> up code (avoid writing 'function' directly).
> With operators, expression closures and lambdas there will be no place
> left for such framework. Everything would be possible to write
> directly and use typing and compilation niceties.

The signal/slot implementation in MochiKit is not at all superfluous.
More than one callback can be connected to a slot, and when connected
to DOM objects it presents a uniform event object regardless of the
underlying implementation.

No needs for workarounds? Are you kidding? We are talking about web browsers.

-bob



More information about the Es4-discuss mailing list