I'm guessing that #lang racket is a dialect of scheme with much more out of the box structures and common functions and perhaps would be more pedagogic. What are the perks a #lang racket against #lang scheme?
Is it best (or even possible) to use #lang scheme in racket to follow all the content of 'Structure and Interpretation of Computer Programs' or even 'How to Design Programs'. HtDP is #lang racket specific?
Whatever code written in #lang scheme, as long as libraries are not being included, can be used in chicken scheme or any main interpreter?
Thanks in advance.
转载于:https://stackoverflow.com/questions/7152416/differences-between-lang-scheme-and-lang-racket
Yes, #lang racket
is the racket default dialect, with lots of extensions.
Two places where it is not an extension: if
must have an else branch, and pairs are immutable (no set-car!
and set-cdr!
).
#lang scheme
was used for a while before the name change, and now #lang racket
is used consistently. But we kept #lang scheme
around for compatibility (as well as various scheme/---
libraries that are kept and can sometime be different than racket/---
counterparts). There's no reason to use #lang scheme
in new code.
To follow SICP, don't use any of these -- there's a nice language that Neil Van Dyke wrote, see its web page for details.
To follow HtDP, don't use any of these, use the student languages. There are also new #lang
-based variants like #lang htdp/bsl
but they're not in a complete shape, yet. (And HtDP is not #lang racket
specific.)
No, Racket is very different from Chicken Scheme. You might be able to run some code in both, but those would probably be only tiny toy examples.