<meta charset="utf-8"><div>Here's the release note for futures:</div><div><br></div>- futures: added fsemaphores; 'future' 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"><<a href="mailto:dev-request@racket-lang.org">dev-request@racket-lang.org</a>></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 'help' 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 "Re: Contents of dev digest..."<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'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 <<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>><br>
To: Neil Van Dyke <<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>><br>
Cc: Racket Dev List <<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>><br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
to others)<br>
Message-ID: <<a href="mailto:A9D92E4F-3D60-400E-B427-A58EB14D9939@ccs.neu.edu">A9D92E4F-3D60-400E-B427-A58EB14D9939@ccs.neu.edu</a>><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>
> "Scheme" 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 <<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>><br>
To: Matthias Felleisen <<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>><br>
Cc: Racket Dev List <<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>>, Neil Van Dyke<br>
<<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>><br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
to others)<br>
Message-ID: <BANLkTimrPyQmFqQeJ_LbknFLW2Ng902T=<a href="mailto:A@mail.gmail.com">A@mail.gmail.com</a>><br>
Content-Type: text/plain; charset=UTF-8<br>
<br>
>> ?"Scheme" 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't necessarily agree that<br>
it'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 <<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>><br>
To: Danny Yoo <<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>><br>
Cc: Racket Dev List <<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>>, Neil Van Dyke<br>
<<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>><br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
to others)<br>
Message-ID: <<a href="mailto:CD2497A7-F6D3-4948-B0CF-F11F1541A935@ccs.neu.edu">CD2497A7-F6D3-4948-B0CF-F11F1541A935@ccs.neu.edu</a>><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
<br>
On Apr 29, 2011, at 12:38 PM, Danny Yoo wrote:<br>
<br>
>>> "Scheme" 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't necessarily agree that<br>
> it's only the non-HtDP students who have a distorted understanding.<br>
<br>
<br>
I am aware of that.<br>
<br>
That's distinct from why I said 'sad'.<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 29 Apr 2011 12:45:55 -0400<br>
From: Eli Barzilay <<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>><br>
To: Matthias Felleisen <<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>><br>
Cc: dev <<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>><br>
Subject: Re: [racket-dev] release blurb for 5.1.1<br>
Message-ID: <<a href="mailto:19898.60227.302124.283133@winooski.ccs.neu.edu">19898.60227.302124.283133@winooski.ccs.neu.edu</a>><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
On Tuesday, Matthias Felleisen wrote:<br>
><br>
> On Apr 26, 2011, at 3:46 PM, Jon Rafkind wrote:<br>
><br>
> > kathy<br>
> > * Addition of `define-wish' to the teaching languages and<br>
> > corresponding addition of support for wishes in test reports and<br>
> > check-expects (7758f508c56)<br>
><br>
> This wasn'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 <<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>><br>
To: Danny Yoo <<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>><br>
Cc: Racket Dev List <<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>>, Neil Van Dyke<br>
<<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>><br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
to others)<br>
Message-ID: <<a href="mailto:19898.60488.560050.367743@winooski.ccs.neu.edu">19898.60488.560050.367743@winooski.ccs.neu.edu</a>><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
8 minutes ago, Danny Yoo wrote:<br>
> >> ?"Scheme" is usually a liability when someone used it in school<br>
> >> ?years ago (other than with HtDP).<br>
><br>
> Small anecdote: I had gone a small presentation at WPI about<br>
> teaching alternative concurrent programming models to<br>
> undergraduates. The presenter wanted to explore teaching with<br>
> channels and actors. They chose Google Go as the language to<br>
> explore those models. I raised the question in the after-session:<br>
> why not use Racket? The presenter responded with some shock: he had<br>
> 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'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) '() (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) '() (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 <<a href="mailto:sbloch@adelphi.edu">sbloch@adelphi.edu</a>><br>
To: Danny Yoo <<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>><br>
Cc: Racket Dev List <<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>>, Neil Van Dyke<br>
<<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>><br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
to others)<br>
Message-ID: <<a href="mailto:971277C1-C191-43BE-ACCD-50C7358DF198@adelphi.edu">971277C1-C191-43BE-ACCD-50C7358DF198@adelphi.edu</a>><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
The last chapter of _Picturing Programs_ is entitled "Next Steps". 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'm only vaguely familiar with myself, even having used PLT Scheme since 1998. So I'm not surprised that somebody who had gone through a TS! workshop might not even be aware of their existence.<br>
<br>
(When I'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 <<a href="mailto:dyoo@cs.wpi.edu">dyoo@cs.wpi.edu</a>> wrote:<br>
<br>
>>> "Scheme" 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't necessarily agree that<br>
> it's only the non-HtDP students who have a distorted understanding.<br>
><br>
> _________________________________________________<br>
> For list-related administrative tasks:<br>
> <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 <<a href="mailto:jmarshall@alum.mit.edu">jmarshall@alum.mit.edu</a>><br>
To: Matthias Felleisen <<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>><br>
Cc: PLT Developers <<a href="mailto:dev@lists.racket-lang.org">dev@lists.racket-lang.org</a>><br>
Subject: Re: [racket-dev] racket vs. scheme vs. clojure (as it appears<br>
to others)<br>
Message-ID: <BANLkTi=<a href="mailto:QJAsFvAG49p5CFL4_Ki0bicy8NA@mail.gmail.com">QJAsFvAG49p5CFL4_Ki0bicy8NA@mail.gmail.com</a>><br>
Content-Type: text/plain; charset=UTF-8<br>
<br>
On Fri, Apr 29, 2011 at 8:38 AM, Matthias Felleisen<br>
<<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>> wrote:<br>
><br>
> 2. Could you point me to a criteria that classify Racket as a 'fringe' language<br>
> 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&q=racket%20-%20tennis%2Cclojure&date=1%2F2008%2040m&cmpt=q" target="_blank">http://www.google.com/insights/search/#cat=5&q=racket%20-%20tennis%2Cclojure&date=1%2F2008%2040m&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&cmpt=q" target="_blank">http://www.google.com/insights/search/#q=porn%2Cfood%2Cwater&cmpt=q</a><br>
<br>
This page shows the relative popularity of `DrScheme' to `Racket'.<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' has only recently overtaken `DrScheme' 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>