<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><br>On Sun, Apr 27, 2014 at 1:09 AM, Matthias Felleisen <span dir="ltr"><<a href="mailto:matthias@ccs.neu.edu" target="_blank">matthias@ccs.neu.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
** tab completion must be faster<br></blockquote><div><br></div>and re-indentation of large parts of files too, if possible.<br></div><div class="gmail_quote">Currently, re-indenting a 500 lines file can take a few seconds.<br>

</div><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
?? I don't get the "Uniform syntax is harder to read" comment. More<br>
   highlighting, hmph?<br></blockquote><div><br></div><div>Maybe it's just that he's not used to prefix bracketed syntax. That certainly demands a bit of training.<br>Also, because Racket makes extensive use of long-and-clear words, maybe it is comparable to reading a math formula (non-racket) and reading the same formula using words (racket): If you know how to read a formula (know what all the symbols mean, etc.), it can be much faster than reading the verbose form.<br>

</div><div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
** I do get jealous when I see<br>
<br>
 [(i, j, k) | i <- [1..10], j <- [i..10], k <- [j..10], i^2 + j^2 == k^2]<br>
<br>
vs<br>
<br>
(for*/list ([i (range 1 20)] [j (range i 20)] [k (range j 20)] #:when (= (+ (sqr i) (sqr j)) (sqr k)))<br>
    (list i j k))<br></blockquote><div><br></div><div>Would you be less jealous reading the following?<br><br>(for*/list ([i (.. 1 20)] [j (.. i 20)] [k (.. j 20)] #:when (= (: i ^ 2 + j ^ 2) (: k ^ 2))<br>  (list i j k))<br>

<br></div><div>or is it really the #:when part that you'd have preferred to be treated on par with the rest, as in Haskell? (or the one-liner?)<br></div><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


** Do we need to add these to our library?<br>
<br>
;; (X ... -> Y ...) X *-> [List-of Y]<br>
(define (gather-return-values f . s)<br>
  (call-with-values (lambda () (apply f s)) list))<br>
<br>
;; Nat (X ... -> Y ...) X *-> Y<br>
(define (nth-return-value i f . s)<br>
  (call-with-values (lambda () (apply f s)) (lambda l (list-ref l i))))<br></blockquote><div><br></div><div>I've been having a need of these functions on several occasions myself too.<br>(Although the names are too long, but maybe just omitting `return` would be acceptable to my taste.)<br>

</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

** Printing is brutally expensive in DrRacket. Is there a way to make it<br>
   cheaper?<br></blockquote><div><br></div><div>(maybe use some buffering, like wait at least 0.2 seconds before printing, instead of printing everything right away?)<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



;; -----------------------------------------------------------------------------<br>
<br>
[1] What do we call the thing that shows up at the top right?<br></blockquote><div><br></div><div>I think Robby calls them the blue-boxes?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


;; =============================================================================<br>
PART II <br></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
** "Why, why must everything be Inferior By Default?"<br>
<br>
   We obviously need a 'syntax story' that takes readers directly from<br>
   define-syntax-rule to syntax-parse, bringing in hygiene only late, when it<br>
   truly matters to raise expressiveness<br></blockquote><div><br></div><div>Why not use `define-simple-macro` and completely ditch  `define-syntax-rule` from the guide?<br><br></div><div>He could then have gone from<br>

</div><div>(define-simple-macro (swap x y) ....)<br></div><div>to<br></div><div><div>(define-simple-macro (swap x:id y:id) ....)<br></div><div>in no time.<br><br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



** "For some reason I was thinking that indentation information is somehow<br>
   stored with functions/macros themselves. I was wrong."<br>
<br>
   We discussed this years ago. Hmph, he thought so too.<br></blockquote><div><br></div><div>I'd also have preferred that (but it's easier to say than to do, obviously).<br></div>This would allow users to define their own indentation rules for their own forms, and possible re-define it for old forms, but that is more debatable.<br>

<div>Thanks to submodules, it could be loaded only when used, e.g. by DrRacket.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



** "I'm afraid that with the level of flexibility Racket allows, I'll never get<br>
   to writing an actual program – most likely I'll be spending my time improving<br>
   Racket itself (well, or at least changing it to suit my tastes)."<br>
<br>
   Well, I went there when I was young and saw macros. Who hasn't?<br></blockquote><div><br></div><div>I remember the time when I first thought "Oh my, Racket is the most powerful language in the world!". Quite a enlightenment moment.<br>

<br><div class="gmail_quote">On Sun, Apr 27, 2014 at 2:38 AM, Sam Tobin-Hochstadt <span dir="ltr"><<a href="mailto:samth@cs.indiana.edu" target="_blank">samth@cs.indiana.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div id=":1po" class="" style="overflow:hidden">Ok, I think we agree then. What I'm proposing is that new DrRacket<br>
installations should start in a mode where `#lang racket (+ 3 4)`<br>
works, which is not currently the case.</div></blockquote><div><br></div><div>Completely agree on that.<br></div><div>Also, maybe the Language preferences should be accessible from the "Edit/Preferences" panel, or at least be listed right under, in "Edit/Language preferences".<br>

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