Differences with other lisps?

There are already some resources out there

What is missing?

  • 'Racket' is both a distribution and a language. Racket-the-distribution includes; Racket-the-language, Typed Racket, Swindle, FrTime Lazy Racket, R5RS Scheme, R6RS Scheme, Scribble, Datalog, Racklog, Algol 60 and several teaching languages language.
  • Compiled not interpreted.
  • Lisp-1
  • What else?

(This topic/post is 'wiki' so you should be able to edit it)

5 Likes

Clojure collates this all into one place Clojure - Differences with other Lisps

Can we do the same?

5 Likes
  • Immutable cons cells
  • #lang
  • Racket's module system
  • syntax/parse
  • for/* family
2 Likes

I know OOP isn’t in vogue right now but it also has classes.

1 Like

Racket has a pretty unique compilation model for macros as well. It is much more strict than other languages about leaking information between phases.

Related to the phase system, Racket has a strict module system. You cannot detect if a module is loaded or not without loading said module. Racket supports submodules which allow one to load the containing module without loading the submodule code.

Racket allows non-hygienic macros which still maintain hygiene except where explicitly broken since identifiers have an associated scope that can be set. I think R6RS also has this, but I don't think it is quite as powerful as Racket's macro system.

Unlike older versions of Scheme, Racket uses delimited continuations as opposed to only providing call/cc. You can implement delimited continuations on top of call/cc, but Racket provides first class support for delimited continuations.

2 Likes