Racket
Racket is an extensible multi-paradigm programming language in the Lisp/Scheme family.
Scheme
Scheme is a functional programming language in the Lisp family, closely modeled on lambda calculus with eager (applicative order) evaluation
Others
Example |
---|
All of racket s languages can interoperate so your language of choice is up to you though the rnrs languages tend to go unused in the racket community #lang racket is much more useful for writing programs than any of the scheme implementations but programs can be useful if you want to write programs that run on different scheme implementations from question Case sensitivity in Scheme symbols |
Edit under linux the installer for petite chez scheme does not include swl you have to download it directly;racket is kind of an extended scheme but you can also choose to use standard scheme by specifying from question Can Scheme do GUI without Racket? Or have to use Common Lisp? |
Mit scheme is known for strong interactivitiy support while plt racket feels much more static from question What are the actual differences between Scheme and Common Lisp? (Or any other two dialects of Lisp) |
So while racket has a sicp language where sicp code should work racket s default language is not compatible with scheme from question SICP 1.25 interpreter issue Racket is historically a standard scheme implementation made for education purposes and is pretty much still compatible with scheme for the most part today but they have made a split and does not consider themselves to follow a scheme standard from question Are "procedure" and "function" synonymous in Racket? |
At a high-level it s very close to scheme but scheme goes much farther in that you can quickly slap up a language that is a restriction of the racket language to just lambda expressions and function applications from question Which FP language follows lambda calculus the closest? |
If you install a scheme implementation i am using mit scheme edited to add that this also works with racket using mzscheme it may come with a symlink named scheme - this is what emacs looks for i think;if it doesn t mit scheme doesn t seem to on os x you can edit your emacs configuration in emacs type m-x customize-group then type scheme from question How to run scheme with Emacs? Both ocaml and racket plt scheme have opengl bindings;it looks like racket doesn t have sdl bindings however which may or may not be important to you from question OCaml and Scheme for game development |
Scheme isn t following a scheme standard at all but is the legacy name of a language that was r5rs compatible once but has changed it s name to #;racket and has immutable pairs as standard from question Using sort! function in DrRacket Scheme is defined by a standard;racket isn t from question Are Scheme and Racket different? If so, how? |
I would suggest you start with scheme and more specifically with racket formerly plt scheme from question What to learn Scheme vs Lisp |
Racket also includes a lot of standard libraries web server that other scheme do not;for one big example racket lists are immutable by default whereas scheme s are mutable from question How is Racket different from Scheme? |
There are various object systems you can load as libraries when you want to do oop but integration with existing code heavily depends on the scheme dialect and its surrounding culture chicken scheme seems to be more object-oriented than racket for instance from question What are the actual differences between Scheme and Common Lisp? (Or any other two dialects of Lisp) |
See page 25 section 6.3.2 in the scheme r5rs specification for a full list of list accessing functions;racket probably has more from question Accessing a stored list in Racket |
On the side of using macros racket has always been more advanced than other scheme and lisp implementations from question How does a macro-enabled language keep track of the source code for debugging? |
Racket is closer to scheme than to common lisp but you could dip your toes into the lisp family without the speed bump of the emacs style of development from question Learning Common Lisp tips for a Windows/C++ programmer |
Latest version of scheme r7rs isn t available in racket yet;racket has support for many surface languages from question Using define within define keep giving me an error.Why? |