I know it but TameJS/IcedCoffeeScript came after streamline (I released 
streamline in January 2011, 5 months before tameJS). We were already using 
streamline heavily in our project when tameJS came out.

Last time I looked at IcedCoffeeScript, it had limited support for 
await/defer in subexpressions, it did not support exception handling 
constructs (try/catch, try/finally), it did not trampoline, etc. (except 
for the trampoline, streamline had these features from day 1). Also, 
streamline supports 3 transformation modes: callbacks, fibers and 
generators.

I recently looked at the tame paper and I was not overly impressed: the AST 
transform that it describes corresponds to streamline's basic 
transformation patterns but streamline uses a lot more patterns (see 
http://bjouhier.wordpress.com/2011/05/24/yield-resume-vs-asynchronous-callbacks/).
 
My goal with streamline was to handle 100% of JavaScript, not a subset.

Streamline's syntax receives a lot of criticisms. I could have used a 
keyword ('wait' was a good candidate) instead of _ but I wanted a discrete 
(yet visible) marker that was unlikely to collide with variable or function 
names. This is why I chose _ (unfortunately I had missed the cool 
underscore library at the time). 

But I don't see any advantage in replacing _ with a pair of await/defer 
keyword, at least if we set aside considerations of taste. Consider the 
following:

composition: 
  f1(_, f2(_, f3(_, a)))
operators: 
  f1(_, a) + 2 * f2(_, b) / f3 (_, c)
  f1(_, a) || f2(_, b) || f3 (_, c)
initializers
  { p1: f1(_, a), p2: f2(_, b) }
  [ f1(_, a), f2(_, a), f3(_, c) ]
chaining: 
  f1(_, a).f2(_, b).f3(_, c)
arbitrary combination of the above

How would you write these with defer/await keywords? To me, the keywords 
won't help. Instead, they will "get in the way".

Bruno


On Thursday, August 23, 2012 10:43:49 PM UTC+2, Stuart Carnie wrote:
>
> Bruno,
>
> Have you experimented with IcedCoffeeScript?  The await / defer syntax is 
> just great.
>
> Cheers,
>
> Stuart
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to