# Scheme Languages

From the introduction of (R5RS):

- Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language [...] designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.

DrScheme supports four dialects of Scheme, including three that are specifically designed for teaching computer science:

- Beginning Student Scheme is a pedagogical version of Scheme that is tailored for beginning computer science students.

- Intermediate Student Scheme extends Beginning Student Scheme with local bindings.

- Advanced Student Scheme extends Intermediate Student Scheme with higher-order procedures and mutable state.

- Full Scheme is a practical dialect of Scheme, essentially a superset of R5RS Scheme (except for macros). In addition to the the base Scheme language, MzScheme provides exceptions, threads, objects, components, regular expressions, TCP support, filesystem utilities, and process control operations. At this level, there are options to access graphical libraries for creating GUI applications, and to provide source location information for debugging. See also and .

  Full Scheme refers to two main options: Textual (MzScheme) and Graphical (MrEd). Each option comes with and without debugging support.

  MzScheme is a practical dialect of Scheme, essentially a superset of R5RS Scheme (except for macros). In addition to the the base Scheme language, MzScheme provides exceptions, threads, objects, components, regular expressions, TCP support, filesystem utilities, and process control operations. See also .

  MrEd extends MzScheme with a graphical toolbox for creating GUI applications (with special support for editor applications, hence the Ed in MrEd). See also .

  Debugging support refers to source highlighting when an exception is raised. The non-debugging options are faster and support exactly those languages that can be run outside of DrScheme.

For details about the differences between these languages, see .

For further general information about Scheme, see How to Design Programs.