On Jul 14, 2012, at 6:54 PM, Rouben Rostamian wrote:
> Thank you, Matthias (and also Neil Van Dyke) for the very
> detailed explanation of the design decisions that has gone
> into Racket. Now I see that Racket is intended to be a Lisp
> dialect of its own rather than a "Scheme plus extensions"
> as I had mistakenly assumed.
>> 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.
The 'one to one correspondence' to which you refer are the implementation of expressions and fundamental functions. I believe they are as significant as the standard upon which C is based.
The recent discussion entitled "This is too clumsy. Is there a better way?" had several examples which are common to modern Schemes. R5RS and Racket both accept the following expressions and functions, even though the implementations are separated by two decades.
(define (all-lower-case? locs)
(if (null? locs) #t
(if (char-upper-case? (car locs)) #f
(all-lower-case? (cdr locs)))))
(all-lower-case? (string->list "asdf12#@"))
(all-lower-case? (string->list "asDf12#@"))
I am a longtime C programmer that is more worried about maintaining C than porting Racket programs if the Racketeers all move to Mars.
rac