<br><br><div class="gmail_quote">On Mon, Sep 10, 2012 at 9:52 AM, Neil Van Dyke <span dir="ltr">&lt;<a href="mailto:neil@neilvandyke.org" target="_blank">neil@neilvandyke.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Two syntax tweaks I&#39;d like to see in Racket 5.4:<br>
<br>
* Colon keywords -- Make symbols beginning with the colon character read as keywords.  Possibly also make keywords print as starting with colon rather than pound-colon.  I know some people don&#39;t mind &quot;#:&quot;, but I don&#39;t like typing it or looking at it.  I think &quot;#:&quot; also looks gratuitously different/cumbersome to people coming from Lisps, and unnecessarily cryptic to people just coming from anywhere else.<br>

</blockquote><div><br>+1, but I suspect that some people really prefer the #: because it makes the fact that it&#39;s only syntax apparent?<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



* Multiple-value LHS in &quot;let&quot; forms -- In the &quot;let&quot;* forms (i.e., &quot;let&quot;, &quot;let*&quot;, &quot;letrec&quot;), in addition to permitting the LHS of a binding to be an identifier, also permit LHS to specify multiple idents for multiple-value binding.  Two motivations: (1) &quot;let-values&quot; and friends are painfully long for something as basic as a binding form, and increase rightward drift; and (2) when editing code to change an existing use of a single-values &quot;let&quot;* form to add a multiple-values to it, having a multiple-values LHS doesn&#39;t require adding a bunch of extra parens to the existing single-values.  Syntax-wise, I would be equally happy with any of the three alternatives for multiple-value LHS: &quot;(values ID ...+)&quot;, or drop the keyword to have just &quot;(ID ...+)&quot;. or even drop the parens so LHS syntax is simply &quot;ID ...+&quot;.<br>

</blockquote><div><br>I&#39;d something like that too, although if you can write (let ([(a b c) (values 1 2 3)]) ....), then you may infer that you can write (define (a b c) (values 1 2 3)), which is wrong.<br>Yet, you can&#39;t write (let ([(f x) (+ x 1)]) (f 3)), so let is already different from define.<br>

</div></div><br>Laurent<br>