<meta charset="utf-8"><div>Here&#39;s the release note for futures:</div><div><br></div>- futures: added fsemaphores; &#39;future&#39; primitive now no longer freezes futures;<br><div class="im">  improved the logging messages futures produce</div>
<div><br></div><div>-James </div><div><br></div><br><div class="gmail_quote">On Fri, Apr 29, 2011 at 12:05 PM,  <span dir="ltr">&lt;<a href="mailto:dev-request@racket-lang.org">dev-request@racket-lang.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Send dev mailing list submissions to<br>
        <a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="http://lists.racket-lang.org/dev/listinfo" target="_blank">http://lists.racket-lang.org/dev/listinfo</a><br>
or, via email, send a message with subject or body &#39;help&#39; to<br>
        <a href="mailto:dev-request@racket-lang.org">dev-request@racket-lang.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:dev-owner@racket-lang.org">dev-owner@racket-lang.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than &quot;Re: Contents of dev digest...&quot;<br>
<br>
<br>
[Please handle dev list administrative tasks through the Web:<br>
   <a href="http://lists.racket-lang.org/listinfo/dev" target="_blank">http://lists.racket-lang.org/listinfo/dev</a>]<br>
<br>
Today&#39;s Topics:<br>
<br>
   1. Re: racket vs. scheme vs. clojure (as it appears to       others)<br>
      (Matthias Felleisen)<br>
   2. Re: racket vs. scheme vs. clojure (as it appears to       others)<br>
      (Danny Yoo)<br>
   3. Re: racket vs. scheme vs. clojure (as it appears to       others)<br>
      (Matthias Felleisen)<br>
   4. Re: release blurb for 5.1.1 (Eli Barzilay)<br>
   5. Re: racket vs. scheme vs. clojure (as it appears  to      others)<br>
      (Eli Barzilay)<br>
   6. Re: racket vs. scheme vs. clojure (as it appears to others)<br>
      (Stephen Bloch)<br>
   7. Re: racket vs. scheme vs. clojure (as it appears to       others)<br>
      (Joe Marshall)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 29 Apr 2011 12:10:25 -0400<br>
From: Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt;<br>
To: Neil Van Dyke &lt;<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>&gt;<br>
Cc: Racket Dev List &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;<br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
        to      others)<br>
Message-ID: &lt;<a href="mailto:A9D92E4F-3D60-400E-B427-A58EB14D9939@ccs.neu.edu">A9D92E4F-3D60-400E-B427-A58EB14D9939@ccs.neu.edu</a>&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
<br>
<br>
On Apr 29, 2011, at 11:31 AM, Neil Van Dyke wrote:<br>
<br>
&gt;  &quot;Scheme&quot; is usually a liability when someone used it in school years ago (other than with HtDP).<br>
<br>
Sad.<br>
<br>
<br>
Thanks for the idea. -- Matthias<br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Fri, 29 Apr 2011 12:38:24 -0400<br>
From: Danny Yoo &lt;<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>&gt;<br>
To: Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt;<br>
Cc: Racket Dev List &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;, Neil Van Dyke<br>
        &lt;<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>&gt;<br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
        to      others)<br>
Message-ID: &lt;BANLkTimrPyQmFqQeJ_LbknFLW2Ng902T=<a href="mailto:A@mail.gmail.com">A@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=UTF-8<br>
<br>
&gt;&gt; ?&quot;Scheme&quot; is usually a liability when someone used it in school years ago (other than with HtDP).<br>
<br>
Small anecdote: I had gone a small presentation at WPI about teaching<br>
alternative concurrent programming models to undergraduates.  The<br>
presenter wanted to explore teaching with channels and actors.  They<br>
chose Google Go as the language to explore those models.  I raised the<br>
question in the after-session: why not use Racket?  The presenter<br>
responded with some shock: he had no idea Racket supported threads or<br>
had channels.<br>
<br>
The presenter had gone through a HtDP class, and was convinced that<br>
BSL was all that Racket was about.  So I don&#39;t necessarily agree that<br>
it&#39;s only the non-HtDP students who have a distorted understanding.<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Fri, 29 Apr 2011 12:42:35 -0400<br>
From: Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt;<br>
To: Danny Yoo &lt;<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>&gt;<br>
Cc: Racket Dev List &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;, Neil Van Dyke<br>
        &lt;<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>&gt;<br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
        to      others)<br>
Message-ID: &lt;<a href="mailto:CD2497A7-F6D3-4948-B0CF-F11F1541A935@ccs.neu.edu">CD2497A7-F6D3-4948-B0CF-F11F1541A935@ccs.neu.edu</a>&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
<br>
On Apr 29, 2011, at 12:38 PM, Danny Yoo wrote:<br>
<br>
&gt;&gt;&gt;  &quot;Scheme&quot; is usually a liability when someone used it in school years ago (other than with HtDP).<br>
&gt;<br>
&gt; Small anecdote: I had gone a small presentation at WPI about teaching<br>
&gt; alternative concurrent programming models to undergraduates.  The<br>
&gt; presenter wanted to explore teaching with channels and actors.  They<br>
&gt; chose Google Go as the language to explore those models.  I raised the<br>
&gt; question in the after-session: why not use Racket?  The presenter<br>
&gt; responded with some shock: he had no idea Racket supported threads or<br>
&gt; had channels.<br>
&gt;<br>
&gt; The presenter had gone through a HtDP class, and was convinced that<br>
&gt; BSL was all that Racket was about.  So I don&#39;t necessarily agree that<br>
&gt; it&#39;s only the non-HtDP students who have a distorted understanding.<br>
<br>
<br>
I am aware of that.<br>
<br>
That&#39;s distinct from why I said &#39;sad&#39;.<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 29 Apr 2011 12:45:55 -0400<br>
From: Eli Barzilay &lt;<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>&gt;<br>
To: Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt;<br>
Cc: dev &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;<br>
Subject: Re: [racket-dev] release blurb for 5.1.1<br>
Message-ID: &lt;<a href="mailto:19898.60227.302124.283133@winooski.ccs.neu.edu">19898.60227.302124.283133@winooski.ccs.neu.edu</a>&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
On Tuesday, Matthias Felleisen wrote:<br>
&gt;<br>
&gt; On Apr 26, 2011, at 3:46 PM, Jon Rafkind wrote:<br>
&gt;<br>
&gt; &gt; kathy<br>
&gt; &gt;  * Addition of `define-wish&#39; to the teaching languages and<br>
&gt; &gt; corresponding addition of support for wishes in test reports and<br>
&gt; &gt; check-expects (7758f508c56)<br>
&gt;<br>
&gt; This wasn&#39;t supposed to go in.<br>
<br>
I see that Matthew pushed a change that disables it in BSL -- is that<br>
the only place where they were in?<br>
<br>
--<br>
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:<br>
                    <a href="http://barzilay.org/" target="_blank">http://barzilay.org/</a>                   Maze is Life!<br>
<br>
<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Fri, 29 Apr 2011 12:50:16 -0400<br>
From: Eli Barzilay &lt;<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>&gt;<br>
To: Danny Yoo &lt;<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>&gt;<br>
Cc: Racket Dev List &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;, Neil Van Dyke<br>
        &lt;<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>&gt;<br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
        to      others)<br>
Message-ID: &lt;<a href="mailto:19898.60488.560050.367743@winooski.ccs.neu.edu">19898.60488.560050.367743@winooski.ccs.neu.edu</a>&gt;<br>
Content-Type: text/plain; charset=utf-8<br>
<br>
8 minutes ago, Danny Yoo wrote:<br>
&gt; &gt;&gt; ?&quot;Scheme&quot; is usually a liability when someone used it in school<br>
&gt; &gt;&gt; ?years ago (other than with HtDP).<br>
&gt;<br>
&gt; Small anecdote: I had gone a small presentation at WPI about<br>
&gt; teaching alternative concurrent programming models to<br>
&gt; undergraduates.  The presenter wanted to explore teaching with<br>
&gt; channels and actors.  They chose Google Go as the language to<br>
&gt; explore those models.  I raised the question in the after-session:<br>
&gt; why not use Racket?  The presenter responded with some shock: he had<br>
&gt; no idea Racket supported threads or had channels.<br>
<br>
This is completely off-topic wrt the original thread, but IMO having<br>
these tools in Racket means that you can play with them and contrast<br>
various approaches in a better way.  One example I show in my class is<br>
the sieve way of generating prime numbers -- I do that first in lazy<br>
racket:<br>
<br>
  (define nats (cons 1 (map add1 nats)))<br>
  (define (divides? n m)<br>
    (zero? (modulo m n)))<br>
  (define (sift n l)<br>
    (filter (lambda (x) (not (divides? n x))) l))<br>
  (define (sieve l)<br>
    (cons (first l) (sieve (sift (first l) (rest l)))))<br>
  (define primes (sieve (rest nats)))<br>
<br>
and then I show them a solution that is based on channels which is<br>
more or less a direct translation from Rob Pike&#39;s talk at google<br>
(which is why it relies heavily on state in each thread), and then one<br>
more that uses generators.<br>
<br>
  ----------------------------------------------------------------------<br>
  #lang racket<br>
<br>
  (define-syntax-rule (bg expr ...) (thread (lambda () expr ...)))<br>
<br>
  (define nats<br>
    (let ([out (make-channel)])<br>
      (define (loop i) (channel-put out i) (loop (add1 i)))<br>
      (bg (loop 1))<br>
      out))<br>
  (define (divides? n m)<br>
    (zero? (modulo m n)))<br>
  (define (filter pred c)<br>
    (define out (make-channel))<br>
    (define (loop)<br>
      (let ([x (channel-get c)])<br>
        (when (pred x) (channel-put out x))<br>
        (loop)))<br>
    (bg (loop))<br>
    out)<br>
  (define (sift n c)<br>
    (filter (lambda (x) (not (divides? n x))) c))<br>
  (define (sieve c)<br>
    (define out (make-channel))<br>
    (define (loop c)<br>
      (define first (channel-get c))<br>
      (channel-put out first)<br>
      (loop (sift first c)))<br>
    (bg (loop c))<br>
    out)<br>
  (define primes<br>
    (begin (channel-get nats) (sieve nats)))<br>
<br>
  (define (take n c)<br>
    (if (zero? n) &#39;() (cons (channel-get c) (take (sub1 n) c))))<br>
<br>
  (take 10 primes)<br>
  ----------------------------------------------------------------------<br>
<br>
  ----------------------------------------------------------------------<br>
  #lang racket<br>
<br>
  (require racket/generator)<br>
<br>
  (define nats<br>
    (generator ()<br>
      (letrec ([loop (lambda (i)<br>
                       (yield i)<br>
                       (loop (add1 i)))])<br>
        (loop 1))))<br>
  (define (divides? n m)<br>
    (zero? (modulo m n)))<br>
  (define (filter pred g)<br>
    (generator ()<br>
      (letrec ([loop (lambda ()<br>
                       (let ([x (g)])<br>
                         (when (pred x) (yield x))<br>
                         (loop)))])<br>
        (loop))))<br>
  (define (sift n g)<br>
    (filter (lambda (x) (not (divides? n x))) g))<br>
  (define (sieve g)<br>
    (define (loop g)<br>
      (define first (g))<br>
      (yield first)<br>
      (loop (sift first g)))<br>
    (generator () (loop g)))<br>
  (define primes<br>
    (begin (nats) (sieve nats)))<br>
<br>
  (define (take n g)<br>
    (if (zero? n) &#39;() (cons (g) (take (sub1 n) g))))<br>
<br>
  (take 10 primes)<br>
  ----------------------------------------------------------------------<br>
<br>
<br>
--<br>
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:<br>
                    <a href="http://barzilay.org/" target="_blank">http://barzilay.org/</a>                   Maze is Life!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 6<br>
Date: Fri, 29 Apr 2011 12:56:16 -0400<br>
From: Stephen Bloch &lt;<a href="mailto:sbloch@adelphi.edu">sbloch@adelphi.edu</a>&gt;<br>
To: Danny Yoo &lt;<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>&gt;<br>
Cc: Racket Dev List &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;, Neil Van Dyke<br>
        &lt;<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>&gt;<br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
        to others)<br>
Message-ID: &lt;<a href="mailto:971277C1-C191-43BE-ACCD-50C7358DF198@adelphi.edu">971277C1-C191-43BE-ACCD-50C7358DF198@adelphi.edu</a>&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
The last chapter of _Picturing Programs_ is entitled &quot;Next Steps&quot;.  It mentions HtDP, HtDP2e, HtDW, HtDC, and a list of advanced Racket topics: the Web server, modules, racket/contract, classes, macros, stand-alone executables, and GUI and graphics libraries.  Most of these topics (not to mention futures, promises, threads, and channels) I&#39;m only vaguely familiar with myself, even having used PLT Scheme since 1998. So I&#39;m not surprised that somebody who had gone through a TS! workshop might not even be aware of their existence.<br>

<br>
(When I&#39;m programming in Racket for myself, I tend to work in ISLL + racket/contract.  Why would anyone need more than that? :-) )<br>
<br>
<br>
<br>
Stephen Bloch<br>
<a href="mailto:sbloch@adelphi.edu">sbloch@adelphi.edu</a><br>
<br>
On Apr 29, 2011, at 12:38 PM, Danny Yoo &lt;<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>&gt; wrote:<br>
<br>
&gt;&gt;&gt;  &quot;Scheme&quot; is usually a liability when someone used it in school years ago (other than with HtDP).<br>
&gt;<br>
&gt; Small anecdote: I had gone a small presentation at WPI about teaching<br>
&gt; alternative concurrent programming models to undergraduates.  The<br>
&gt; presenter wanted to explore teaching with channels and actors.  They<br>
&gt; chose Google Go as the language to explore those models.  I raised the<br>
&gt; question in the after-session: why not use Racket?  The presenter<br>
&gt; responded with some shock: he had no idea Racket supported threads or<br>
&gt; had channels.<br>
&gt;<br>
&gt; The presenter had gone through a HtDP class, and was convinced that<br>
&gt; BSL was all that Racket was about.  So I don&#39;t necessarily agree that<br>
&gt; it&#39;s only the non-HtDP students who have a distorted understanding.<br>
&gt;<br>
&gt; _________________________________________________<br>
&gt;  For list-related administrative tasks:<br>
&gt;  <a href="http://lists.racket-lang.org/listinfo/dev" target="_blank">http://lists.racket-lang.org/listinfo/dev</a><br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 7<br>
Date: Fri, 29 Apr 2011 10:05:25 -0700<br>
From: Joe Marshall &lt;<a href="mailto:jmarshall@alum.mit.edu">jmarshall@alum.mit.edu</a>&gt;<br>
To: Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt;<br>
Cc: PLT Developers &lt;<a href="mailto:dev@lists.racket-lang.org">dev@lists.racket-lang.org</a>&gt;<br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
        to      others)<br>
Message-ID: &lt;BANLkTi=<a href="mailto:QJAsFvAG49p5CFL4_Ki0bicy8NA@mail.gmail.com">QJAsFvAG49p5CFL4_Ki0bicy8NA@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=UTF-8<br>
<br>
On Fri, Apr 29, 2011 at 8:38 AM, Matthias Felleisen<br>
&lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:<br>
&gt;<br>
&gt; 2. Could you point me to a criteria that classify Racket as a &#39;fringe&#39; language<br>
&gt; and Clojure as a non-fringe language?<br>
<br>
This is no criterion, but it is suggestive:<br>
<a href="http://www.google.com/insights/search/#cat=5&amp;q=racket%20-%20tennis%2Cclojure&amp;date=1%2F2008%2040m&amp;cmpt=q" target="_blank">http://www.google.com/insights/search/#cat=5&amp;q=racket%20-%20tennis%2Cclojure&amp;date=1%2F2008%2040m&amp;cmpt=q</a><br>

<br>
But to be fair, popularity is a terrible metric:<br>
<a href="http://www.google.com/insights/search/#q=porn%2Cfood%2Cwater&amp;cmpt=q" target="_blank">http://www.google.com/insights/search/#q=porn%2Cfood%2Cwater&amp;cmpt=q</a><br>
<br>
This page shows the relative popularity of `DrScheme&#39; to `Racket&#39;.<br>
<a href="https://sites.google.com/site/evalapply/name-change" target="_blank">https://sites.google.com/site/evalapply/name-change</a><br>
<br>
It appears that `Racket&#39; has only recently overtaken `DrScheme&#39; in<br>
what people search for.<br>
<font color="#888888"><br>
<br>
<br>
--<br>
~jrm<br>
<br>
<br>
End of dev Digest, Vol 27, Issue 76<br>
***********************************<br>
</font></blockquote></div><br>