[racket-dev] [plt] Push #28781: master branch updated

From: Sam Tobin-Hochstadt (samth at cs.indiana.edu)
Date: Mon May 26 02:21:22 EDT 2014

On Sat, May 24, 2014 at 8:02 AM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
>> On May 23, 2014, at 3:59 PM, Greg Hendershott <greghendershott at gmail.com> wrote:
>> Feedback from a relatively naive Racket user:
>> 1.
>>> +External effects are exemplified by input/output (or I/O). I/O is the
>>> +action of a function such as @racket[tcp-connect], which communicates
>>> +with the operating system to send network packets outside of the
>>> +machine running Racket via the electromagnetic spectrum.
>> It might be OK to omit "via the electromagnetic spectrum". Yes I'm
>> aware of RFC 1149. But still.  :)
> Yes, maybe it's too cute. I really wanted to emphasize its irreversibility.

I think emphasizing the irreversibility is a good idea, but the
document should just say that directly, instead of being cute like

>> 2.
>>> +In particular, if module A is shared by the phase 1 portion of modules
>>> +X and Y, then any internal effects while X is compiled are not visible
>>> +during the compilation of Y, regardless of whether X and Y are
>>> +compiled during the same Racket runtime system.
>> Was "system" supposed to be "session"?
> No. Each time you start Racket you get a NEW rts.

I think this terminology is going to confuse people. What about
"during the same execution of Racket's runtime system"?

>> 3. The practical example goes some way toward explaining why this
>> matters. But only part way (for me). Probably some real-life situation
>> motivated this. Knowing that backstory might help. (If you think that
>> tale doesn't fit and/or belong in the reference docs, maybe it would
>> make a great blog post?)
> Yes. One of Matthew's papers has some good examples.

In particular, "Composable and Compilable Macros", ICFP 2002, and
"Advanced Macrology and the implementation of Typed Scheme", Scheme
Workshop 2007.


Posted on the dev mailing list.