I *really* don't want to wade deep into these waters, but I'll respond a bit here to correct errors:
On Nov 11, 2012, at 9:02 PM, Leo Meyerovich <[email protected]> wrote: > I've been lurking on this thread and am somewhat confused. Is the motivation > for promises a needed expressive primitive, updating the standard library to > have asynchronous calls and structure them via promises, sugar, or something > else? I assume it's not to proscribe one particular style of coordination > over another, which would have little empirical validation. Putting things into a language or standard library in no way "proscribes" alternatives; it does however anoint one variant as "idiomatic". To the extent a built-in does that, it should be following practice. Now, perhaps you haven't been watching the mis-designs in DOM or the ubiquitous promise/future/deferred-like libraries that are now part of every major JS toolkit on the client side (still our major user). Or perhaps you think that doesn't hold a lot of water as the language can go its own way (a view I'm *obviously* sympathetic to). But either way, I think Promises have value in that they: * were the basis for the underlying API we used to describe what happened when functions were de-sugared in the "await" proposal. They can do something similar for generators and, as someone who dislikes magic in general, I think we should do that work. * the weight of library authors sending down their own versions of this stuff is MASSIVE and *should* inform what we do. Any other bias needs massive justification. So yes, we have tons of validation on this. Just look around. Regards > -- If it's for asynchronous standard API, why shouldn't coordination be a > user-level framework decision? E.g., have one callback for each async API (or > two, succeed and fail), and leave the rest up to the coordination framework > of the day? Simple API structure, like one of these patterns, will help > framework writers make generic wrappers, but introducing more seems > excessive. The main use case for APIs would be (AFAICT) to allow frameworks > to introspect on whether an API call is async. Promises would enable > inspecting the return value, but this seems awkward and maybe even late. > > -- If the motivation is for language-level issues, I'm curious as to how this > relates to topics like compiler optimization, multiprocessing, cross-frame > communication, etc. Furthermore, are there any semantic concerns coming up > (e.g., E style vats), or is the intent here purely sugar? (I assume blocking > on a Liskov-style future will not be allowed). > > -- For sugar, a lightweight lambda and, if still desired, macros, seem to > eliminate much of the need of a primitive. > > Hopefully my confusion as to the motivation and design space here is clear :) > > Regards, > > - Leo > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss -- Alex Russell [email protected] [email protected] [email protected] BE03 E88D EABB 2116 CC49 8259 CF78 E242 59C3 9723 _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

