<p>-1</p>
<p>But this is why we can make our own #langs.</p>
<div class="gmail_quote">On May 10, 2012 11:55 PM, &quot;Michael W&quot; &lt;<a href="mailto:mwilber@uccs.edu">mwilber@uccs.edu</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Yes! Hear, hear! Having to explicitly write all the references<br>
out and get their types right is a pain point for me. Maybe it&#39;s<br>
encouraged by the design recipe, but sometimes I get jealous of<br>
languages like Clojure, which (from what I understand) would let<br>
me write something like this:<br>
<br>
;; initials = person[i].firstname[0] + person[i].lastname[0]<br>
<br>
(string-append (((person i) &#39;firstname) 0)<br>
               (((person i) &#39;lastname) 0)<br>
<br>
Clojure doesn&#39;t rely on string-ref or friends. Instead, both of<br>
these:<br>
(some-hash &#39;key)<br>
(&#39;key some-hash)<br>
are analagous to Racket&#39;s (hash-ref some-hash &#39;key).<br>
<br>
This works on arrays too. Arrays just map integers to values<br>
instead of mapping symbol keys to values. And of course, Clojure<br>
lets custom objects redefine and override this lookup behavior.<br>
<br>
As you can tell, I&#39;m terribly excited for the recent work going<br>
into Racket&#39;s generics.<br>
<br>
5 hours ago, Justin Zamora wrote:<br>
&gt; In my experience, the heaviness of Racket doesn&#39;t come from words like<br>
&gt; &quot;define&quot;, etc.  It comes in certain categories of programs that deal<br>
&gt; extensively with strings, vectors, and structured data.  For example,<br>
&gt;<br>
&gt; initials = person[i].firstname[0] + person[i].lastname[0]<br>
&gt;<br>
&gt; This is very readable and useful.  It can be written quickly and is<br>
&gt; read and understood easily The overloading of &quot;+&quot; (or your operator of<br>
&gt; choice) and the implicit coercion of characters to strings is exactly<br>
&gt; what is wanted here.  Even evaluating person[i] more than once doesn&#39;t<br>
&gt; clutter up the expression.<br>
&gt;<br>
&gt; Compare this to the equivalent Racket:<br>
&gt;<br>
&gt; (define initials<br>
&gt;   (string-append (string (string-ref (id-firstname (vector-ref person i)) 0))<br>
&gt;                  (string (string-ref (id-lastname (vector-ref person i)) 0))))<br>
&gt;<br>
&gt; For this sort of thing, the Racket version is much harder to write,<br>
&gt; read, and verify.  It would be nice to have something akin to<br>
&gt; at-expressions that would allow such expressions to be written more<br>
&gt; clearly.<br>
&gt;<br>
&gt; Justin<br>
&gt;<br>
&gt; On Thu, May 10, 2012 at 4:00 PM, Matthias Felleisen<br>
&gt; &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; I will assert something about readability:<br>
&gt; &gt;<br>
&gt; &gt;  Racket programs look heavy when compared with Haskell programs.<br>
&gt; &gt;<br>
&gt; &gt; This is probably true for Python instead of Haskell, too. It is also true for ML. I conjecture that part of that heaviness comes from wide lines, long names, deep nesting. Who knows. I don&#39;t even know how to measure this kind of property.<br>

&gt; &gt;<br>
&gt; &gt; At this point, I can express certain ideas more easily in Racket than in Haskell, Python, ML or whatever, which is why I am fine. But if this advantage ever disappeared, heaviness would definitely be a factor to weigh.<br>

&gt; &gt;<br>
&gt; &gt; -- Matthias<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On May 10, 2012, at 3:49 PM, ozzloy-racket-users wrote:<br>
&gt; &gt;<br>
&gt; &gt;&gt; i didn&#39;t assert that word length has nothing to do with readability, just that word frequency has more impact on reading time than word length.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Thu, May 10, 2012 at 3:39 PM, Luke Vilnis &lt;<a href="mailto:lvilnis@gmail.com">lvilnis@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt; I can only speak for myself but I think it&#39;s a bit much to assert that word length has nothing to do with readability. Heck, maybe that&#39;s even true for you, but not for everyone. I have certainly felt it to be an issue. If the &quot;define&quot; keyword was 50 letters long it would definitely have an impact on my ability to read code - it seems to be an issue of degree, not existence.<br>

&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Thu, May 10, 2012 at 3:26 PM, ozzloy-racket-users &lt;<a href="mailto:ozzloy%2Busers_racket-lang_org@gmail.com">ozzloy+users_racket-lang_org@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt; am i the only one that thinks not having abbreviated names for anything is good?<br>
&gt; &gt;&gt; i like not having &quot;def&quot;.  especially if it&#39;s going to be redundant.<br>
&gt; &gt;&gt; i see this as a slippery slope i don&#39;t want to go down.<br>
&gt; &gt;&gt; it annoys me when switching to other languages to have to ask: which way of shortening &quot;function&quot; does this language go with?  was it &quot;fn&quot;? maybe &quot;fun&quot;?<br>
&gt; &gt;&gt; if the language has a strict policy of not using short versions of words, i don&#39;t have to guess.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; as for &quot;def&quot; being easier to read than &quot;define&quot;, that&#39;s not true.  word frequency has more impact on reading time than word length for normal reading.  having more aliases makes both less frequent, so adding &quot;def&quot; could plausibly make reading both take longer.  most people read whole words at a time, rather than letter-by-letter.<br>

&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Thu, May 10, 2012 at 2:56 PM, Grant Rettke &lt;<a href="mailto:grettke@acm.org">grettke@acm.org</a>&gt; wrote:<br>
&gt; &gt;&gt; There is always pretty mode in Emacs.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Thu, May 10, 2012 at 1:45 PM, Ray Racine &lt;<a href="mailto:ray.racine@gmail.com">ray.racine@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt; &gt; FYI for those who may not know.  Racket supports ë as an alias for lambda.<br>
&gt; &gt;&gt; &gt;  ctrl-\ in DrRacket.<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; On Thu, May 10, 2012 at 1:59 PM, Nikita B. Zuev &lt;<a href="mailto:nikitazu@gmail.com">nikitazu@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt; +1 for `def&#39; as alias for `define&#39;.<br>
&gt; &gt;&gt; &gt;&gt; May I also suggest `fun&#39; for `lambda&#39; alias?<br>
&gt; &gt;&gt; &gt;&gt; Three letter names are the best =)<br>
&gt; &gt;&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt; (well one can always do it with require rename-in)<br>
&gt; &gt;&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt; --<br>
&gt; &gt;&gt; &gt;&gt; Regards,<br>
&gt; &gt;&gt; &gt;&gt; Nikita B. Zuev<br>
&gt; &gt;&gt; &gt;&gt; ____________________<br>
&gt; &gt;&gt; &gt;&gt;  Racket Users list:<br>
&gt; &gt;&gt; &gt;&gt;  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; ____________________<br>
&gt; &gt;&gt; &gt;  Racket Users list:<br>
&gt; &gt;&gt; &gt;  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; --<br>
&gt; &gt;&gt; <a href="http://www.wisdomandwonder.com/" target="_blank">http://www.wisdomandwonder.com/</a><br>
&gt; &gt;&gt; ACM, AMA, COG, IEEE<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; ____________________<br>
&gt; &gt;&gt;  Racket Users list:<br>
&gt; &gt;&gt;  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; ____________________<br>
&gt; &gt;&gt;  Racket Users list:<br>
&gt; &gt;&gt;  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; ____________________<br>
&gt; &gt;&gt;  Racket Users list:<br>
&gt; &gt;&gt;  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; ____________________<br>
&gt; &gt;  Racket Users list:<br>
&gt; &gt;  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt;<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div>