[racket] Running Racket in the R6RS mode

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Sat Jul 14 21:30:58 EDT 2012

Rouben Rostamian wrote at 07/14/2012 08:54 PM:
> In retrospect, that assumption was influenced by my experience
> with C which is the predominant language in which I program.
> Various implementations of C, such as those of GNU, Microsoft,
> Intel, Sun, AIX, etc., provide their own diverse extensions
> to the language but in all cases the extensions are strict
> supersets of the standard C -- they would be considered
> unacceptable otherwise.
> I was looking for something similar in the scheme world but
> what I have learned is that one cannot extend his experience
> from one programming language realm and culture into another
> and expect to find a one to one correspondence.

Exactly.  Some of the people currently developing in Racket were C 
developers in the past, and appreciate why someone coming from C would 
just naturally look for a language standard, and see advantage to 
developing to that standard.  But Racket is in a different category, and 
-- as you say -- the assumptions behind looking for an industry standard 
don't apply here they do for, say, C.

Context: C compilers being standards-compliant is actually a relatively 
new thing.  In the early '90s, for example, even Unix workstation 
compilers sometimes weren't even K&R-compliant, much less 
ANSI-compliant.  This made cross-platform development interesting, 
especially when it was even tricky to write an "#ifdef" that itself was 
portable.  Also, more recently with C compilers, we've also had GCC 
extensions driving features in other compilers.  Perhaps similarly, you 
will sometimes see a Scheme implementation adopt Racket features, 
looking at Racket as Scheme dialect, although some Racket features are 
not easy to implement because there is fancy infrastructure underlying 
them.  The Racket developers have also participated quite a lot in 
various Scheme standardization efforts in the past, but I think that 
RnRS is still experimenting with philosophies, including backtracking 
between versions.  Yet the Racket community already has a platform that 
is where RnRS would like to be, but RnRS hasn't yet gotten anywhere near 
there, and there have been a lot of reinvention attempts going on in the 
efforts, which again is a bit different than the history of C 
standardization.  My impression is that Racket supports R6RS 
(incidentally showing off Racket's multiple language platform), but it's 
not let RnRS hold back all the innovation and general productivity 
that's going on.

BTW, Matthias Felleisen is one of the definitive authorities on the 
design of Racket.  I am only a consultant who uses Racket for work, and 
occasionally releases open source third-party libraries for Racket.  I'm 
speaking here only for myself, based on my current impressions.

Neil V.

Posted on the users mailing list.