[racket] Getting started with R6RS

From: Hendrik Boom (hendrik at topoi.pooq.com)
Date: Sun May 15 19:35:07 EDT 2011

On Sat, May 14, 2011 at 06:35:18PM -0400, Eli Barzilay wrote:
> 20 minutes ago, Elliott Cable wrote:
> 
> > 2) The whole “languages” thing is nearly as off-putting as the
> > DrScheme obsession, but in a different way. When I come across an
> > instruction saying to add `#lang racket` or `#!r6rs` at the top of the
> > file, with no explanation of what that does, it feels more than a
> > little bit too much like “magic.” It feels like the language trying to
> > pussyfoot around inexperienced developers, hide from me operation that
> > is considered ‘too complex’ for me to understand.
> 
> WRT this complaint, I really don't see any sane way of not showing it
> as a magical thing.  To fully understand the role of `#lang' you need
> to know about controlling the reader, writing macros, low level
> language reflection APIs etc.  Any explanation that will do that is
> likely to be completely irrelevant and *damaging* to 95% of the
> newbies who will read it.
> 
> For example, you were confused by a mention of `#%module-begin' -- it
> would be better to hide it from you so you don't get those kind of
> problems so early.  (And IIUC, Matthew said that he'll do just that.)
> You are, of course, a very irregular case since it seems that you were
> intentionally looking for those things, and again, IME, almost no
> newbie does.
> 
> BTW, that's nothing new -- the details of how `#lang' works are parts
> of the low level implementation, and *many* languages won't jump
> straight to implementation notes.

There's a confusion between implementation and specification here.  
Would it be enough to say, where the instruction says to insert #!r6rs, 
that Racket implements multiple languages and you seen do specify if you 
want r6rs?  No need to link to the implementation at this point.

Would that confuse neginners too much?

Or is that already there and did Mr. Cable somehow manage to miss it?

-- hendrik


Posted on the users mailing list.