[plt-scheme] units

From: Paul Steckler (steck at ccs.neu.edu)
Date: Fri Oct 25 11:17:40 EDT 2002

A bit off-topic, here's a note for further reading.

Robert Bruce Findler wrote:
> In Scheme, recursive definitions are really shorthand for a sequence of
> assignments. As an example, this:
> 
>   (letrec ([x <x-exp>]
>            [y <y-exp>])
>     <body-exp>)
> 
> is the same thing as this:
> 
>   (let ([x #<undefined>]
>         [y #<undefined>])
>     (set! x <x-exp>)
>     (set! y <y-exp>)
>     <body-exp>)

This is the translation suggested by RnRS. 

> In the model (and in ML, on which the model is based), only "valuable"
> expressions (ie, those beginning with "lambda" or those that are
> constants) are allowed on the right-hand side of a definition, so you
> don't need that more complex explanation of mututal recursion.

There was a paper in this year's Scheme Workshop, "Robust and effective 
transformation of letrec", by Waddell, Sarkar, and Dybvig, that takes 
this idea further, reorganizing letrec bindings according 
to the "valuable" criterion and others, obtaining some excellent 
performance increases over the default RnRS translation.

While looking up this paper, I found that if you search for 
"letrec Dybvig scheme" in Google, it helpfully suggests:

 Did you mean to search for "lautrec dybvig scheme"?

Something at Google is too loose, IMHO.

-- Paul


Posted on the users mailing list.