<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Just a thought, has a prefix ^ been considered?<div><br></div><div>A lambda that takes no arguments could be:</div><div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>^{ /*...*/ }</div></div><div>And a lambda with some arguments:</div><div><div><span class="Apple-tab-span" style="white-space: pre; ">       </span>^(x,y){ /*...*/ }</div></div><div><br></div><div>I just find this really readable, the syntax for lambdas that take no arguments is delightfully minimal (just one extra character!), my brain is well trained to expect argument lists to be delimited by parentheses so I find this much easier to understand, and I find the ^ character pleasingly evocative of ╬╗. :-)</div><div><br></div><div>cheers,</div><div>G.</div><div><br></div><div><div><div>On Jan 13, 2012, at 3:03 PM, Brendan Eich wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
<div bgcolor="#FFFFFF" text="#000000">The { and } around the || 
make it pretty clear the || is not a boolean. Also  you can put a space 
in {| |}. But mainly, as with any alternative bracketing system that 
uses an infix operator, we are relying on the leading { to make it clear
 that the immediately following delimiter, | in the proposal, cannot 
represent its usual infix role (| or ||).<br>
<br>
/be<br>
<br>
<blockquote style="border: 0px none;" cite="mid:4F109DFC.90905@gmail.com" type="cite">
  <div style="margin:30px 25px 10px 25px;" class="__pbConvHr"><div style="display:table;width:100%;border-top:1px solid 
#EDEEF0;padding-top:5px">       <div style="display:table-cell;vertical-align:middle;padding-right:6px;"><img photoaddress="js0000@gmail.com" photoname="john saylor" name="postbox-contact.jpg" height="25px" width="25px" id="6e52dfe6-9772-4b83-82c6-78463aee455e" src="cid:part1.02010400.09000601@mozilla.org"></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;width:100%">
        <a moz-do-not-send="true" href="mailto:js0000@gmail.com" style="color:#737F92 
!important;padding-right:6px;font-weight:bold;text-decoration:none 
!important;">john saylor</a></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;">   
  <font color="#9FA2A5"><span style="padding-left:6px">January 13, 2012 
1:11 PM</span></font></div></div></div>
  <div style="color:#888888;margin-left:24px;margin-right:24px;" __pbrmquotes="true" class="__pbConvBody"><br>
<br>yes, i had the same impression [thx to those who supplied code 
examples].
<br>
<br>one problem i came across in this domain is that a block lambda with
 no 
arguments is visually identical to a boolean or ['||']. context, i 
believe, will clarify this; but from a purely visual perspective, two 
adjacent pipe characters are almost archetypal for the boolean or 
operator [if i can speak about archetypes in computer programming].
<br>
<br></div>
  <div style="margin:30px 25px 10px 25px;" class="__pbConvHr"><div style="display:table;width:100%;border-top:1px solid 
#EDEEF0;padding-top:5px">       <div style="display:table-cell;vertical-align:middle;padding-right:6px;"><img photoaddress="waldron.rick@gmail.com" photoname="Rick Waldron" name="postbox-contact.jpg" height="25px" width="25px" id="c66cc4a3-2de5-4fd0-837e-3ce242fc790d" src="cid:part2.04070600.02050501@mozilla.org"></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;width:100%">
        <a moz-do-not-send="true" href="mailto:waldron.rick@gmail.com" style="color:#737F92 
!important;padding-right:6px;font-weight:bold;text-decoration:none 
!important;">Rick Waldron</a></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;">   
  <font color="#9FA2A5"><span style="padding-left:6px">January 13, 2012 
12:36 PM</span></font></div></div></div>
  <div style="color:#888888;margin-left:24px;margin-right:24px;" __pbrmquotes="true" class="__pbConvBody">FWIW, After working through the
 example gists that I created last night, my opinion changed about the 
look of Block Lambda's with pipes. As others on the list have said 
previously and is now very clear to me, pipes provide a very distinct 
visual cue "this is a block lambda, expect X to happen here" where the 
{(args) expr } gets lost; these visual cues are important when you're 
reading and writing "real world" programs in JavaScript.<div>

<br></div><div><br></div><div>Rick<br><div><br></div><div><br><div><br></div><div><br></div><div> <div><br><br><br></div></div></div></div>

<div>_______________________________________________<br>es-discuss 
mailing list<br><a class="moz-txt-link-abbreviated" href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br><a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a><br></div></div>
  <div style="margin:30px 25px 10px 25px;" class="__pbConvHr"><div style="display:table;width:100%;border-top:1px solid 
#EDEEF0;padding-top:5px">       <div style="display:table-cell;vertical-align:middle;padding-right:6px;"><img photoaddress="allen@wirfs-brock.com" photoname="Allen Wirfs-Brock" name="postbox-contact.jpg" height="25px" width="25px" id="ec6584e2-13f2-4d41-917a-c479894bb412" src="cid:part3.09010202.02080104@mozilla.org"></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;width:100%">
        <a moz-do-not-send="true" href="mailto:allen@wirfs-brock.com" style="color:#737F92 
!important;padding-right:6px;font-weight:bold;text-decoration:none 
!important;">Allen Wirfs-Brock</a></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;">   
  <font color="#9FA2A5"><span style="padding-left:6px">January 13, 2012 
10:51 AM</span></font></div></div></div>
  <div style="color:#888888;margin-left:24px;margin-right:24px;" __pbrmquotes="true" class="__pbConvBody"><br><div><br class="Apple-interchange-newline"><div><br></div><div>I've updated a 
version of my ES.next Smalltalk collections implementation experiment to
 use block lambdas.</div><div>This version is <a moz-do-not-send="true" href="https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp0-blp.js">https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp0-blp.js</a> </div><div>The
 one that you should compare it to is <a moz-do-not-send="true" href="https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp0.js">https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp0.js</a> </div><div><br></div><div>As
 you might expect, this new version is even closer in form to the 
original Smalltalk code.</div><div>In particularly, I was able to 
eliminate all the artifacts that needed to be introduced because of 
function expressions  don't have Tennent's Correspondence. </div><div>In
 the source, I've tagged the lines where TCP is using /*TCP*/</div><div><br></div><div>Allen</div></div><div>_______________________________________________<br>es-discuss
 mailing list<br><a class="moz-txt-link-abbreviated" href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br><a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a><br></div></div>
  <div style="margin:30px 25px 10px 25px;" class="__pbConvHr"><div style="display:table;width:100%;border-top:1px solid 
#EDEEF0;padding-top:5px">       <div style="display:table-cell;vertical-align:middle;padding-right:6px;"><img photoaddress="js0000@gmail.com" photoname="john saylor" name="postbox-contact.jpg" height="25px" width="25px" id="d1b013e8-1051-407e-9167-acd2630ee88e" src="cid:part1.02010400.09000601@mozilla.org"></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;width:100%">
        <a moz-do-not-send="true" href="mailto:js0000@gmail.com" style="color:#737F92 
!important;padding-right:6px;font-weight:bold;text-decoration:none 
!important;">john saylor</a></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;">   
  <font color="#9FA2A5"><span style="padding-left:6px">January 13, 2012 
6:09 AM</span></font></div></div></div>
  <div style="color:#888888;margin-left:24px;margin-right:24px;" __pbrmquotes="true" class="__pbConvBody">hello world!
<br>
<br><br>
<br>i think this would be very helpful too [although, sadly, since i am 
overcommitted as it is, it will not be me].
<br>
<br></div>
  <div style="margin:30px 25px 10px 25px;" class="__pbConvHr"><div style="display:table;width:100%;border-top:1px solid 
#EDEEF0;padding-top:5px">       <div style="display:table-cell;vertical-align:middle;padding-right:6px;"><img photoaddress="dherman@mozilla.com" photoname="David Herman" name="postbox-contact.jpg" height="25px" width="25px" id="2d6df274-850b-48a2-a025-1003175070da" src="cid:part5.00000100.03090607@mozilla.org"></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;width:100%">
        <a moz-do-not-send="true" href="mailto:dherman@mozilla.com" style="color:#737F92 
!important;padding-right:6px;font-weight:bold;text-decoration:none 
!important;">David Herman</a></div>   <div style="display:table-cell;white-space:nowrap;vertical-align:middle;">   
  <font color="#9FA2A5"><span style="padding-left:6px">January 12, 2012 
6:09 PM</span></font></div></div></div>
  <div style="color:#888888;margin-left:24px;margin-right:24px;" __pbrmquotes="true" class="__pbConvBody"><pre wrap="">On Jan 12, 2012, at 2:23 PM, Fran├žois REMY wrote:

</pre><blockquote type="cite"><pre wrap="">If not (as it seems to me), it means that a block lambda will not be used as a statement by itself. If it's the case, it should defined as an Expression only, where there's no anonymous block to conflict the syntax. That solution has been chosen for object notation in the past. That way,

  function() {
      {
          (a, b)
          a.add(b)
      }
  }

would still be an anonymous block where

  function() {
      asyncAction(..., { (a, b) a.add(b); } }
  }

would be a block lambda as an argument of an async function. No semantic change for an identical syntax, in regards to strict ES5.
</pre></blockquote><pre wrap=""><!---->
So simple, and so brilliant. I love it!

I must say, the parens look much prettier to me, and they're of course more consistent with JS precedent.

It does help to write a reasonable chunk of code to compare syntaxes for uses of a feature "in the wild." Does some enterprising es-discusser wanna take a big JS program with a bunch of little anonymous functions, swap them out with block lambdas, and make two gists with the two different syntaxes? That'd be super helpful.

</pre><blockquote type="cite"><pre wrap="">And since I still continue to hope we'll ditch the unprefixed anonymous block in some future revision of ES, that very small edge case could vanish at the same time.
</pre></blockquote><pre wrap=""><!---->
I don't understand what you're referring to here -- what do you mean by "unprefixed anonymous block?"

</pre><blockquote type="cite"><pre wrap="">Does it seems possible/acceptable?
</pre></blockquote><pre wrap=""><!---->
Lovely.

Dave

_______________________________________________
es-discuss mailing list
<a class="moz-txt-link-abbreviated" href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a>
<a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a>

</pre></div>
</blockquote>
</div>
_______________________________________________<br>es-discuss mailing list<br><a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>https://mail.mozilla.org/listinfo/es-discuss<br></blockquote></div><br></div></body></html>