DrScheme is a programming environment for Scheme. It fully integrates a graphics-enriched
editor, a parser for multiple variants of Scheme, a functional read-eval-print loop, and an
algebraic printer. The environment is especially useful for students, because it has a tower
of syntactically restricted variants of Scheme that are designed to catch typical student
mistakes and explain them in terms the students understand. The environment is also useful
for professional programmers, due to its sophisticated programming tools, such as the static
debugger, and its advanced language features, such as units and mixins. Beyond the ordinary
programming environment tools, DrScheme provides an algebraic stepper, a context-sensitive
syntax checker, and a static debugger. The stepper reduces Scheme programs to values,
according to the reduction semantics of Scheme. It is useful for explaining the semantics
of linguistic facilities and for studying the behavior of small programs. The syntax checker
annotates programs with font and color changes based on the syntactic structure of the
program. On demand, it draws arrows that point from bound to binding occurrences of
identifiers. It also supports α-renaming. Finally, the static debugger provides a type inference
system that explains specific inferences in terms of a value-flow graph, selectively overlaid on
the program text.