Racket (programming language)
PLT Scheme is an umbrella name for a family of Scheme implementations:
- DrScheme is the primary PLT Scheme implementation.
- MzScheme is the lightweight, embeddable, scripting-friendly PLT Scheme implementation.
- TeachScheme! is a PLT project to turn Computing and Programming into an indispensable part of the liberal arts curriculum.
- PLaneT is PLT's centralized package distribution system. Visit for a list of user-contributed packages.
PLT is the group of people who produce PLT Scheme.
History
Felleisen founded PLT in the mid 1990s, first as a research group, soon after as a project dedicated to the production of pedagogic materials for novice programmers (lectures, exercises/projects, software). In January 1995, the group decided to develop a pedagogic programming environment. Matthew Flatt cobbled together MrEd (a pun and a tease) from libscheme, wxwindows, and a number of other free systems. Over the year, Robby Findler, Shriram Krishnamurthi, Cormac Flanagan, and some others produced DrScheme, a programming environment for novice Scheme programmers and a research environment for soft typing.
In parallel, the team started conducting workshops for high school teachers, training them in program design and functional programming. Field tests with these teachers and their students provided essential clues for the direction of the development.
Over the following years, PLT added teaching languages, an algebraic stepper, a transparent read-evaluate print loop, a constructor-based printer, and many other innovations to DrScheme. Due to these, DrScheme is truly the first, application quality pedagogic program development environment that deserves this term. By 2001, the core team had also written and published their first text book, How to Design Programs, on their teaching philosophy.
Today, DrScheme is far more than a pedagogic programming environment. It supports module-oriented programming with a module browser, a contour view, integrated testing and coverage measurements, syntax-level refactoring, and many more tools. The team uses DrScheme to develop DrScheme, and developers around the world use it to produce commercial software.
Research
From the beginning, the PLT project was also an experiment in evaluating the suitability of Scheme as a programming language for large projects. In a sense, the language failed and also proved to be an ideal platform.
Scheme per se failed because the language, as defined in the reports, is too small for a team of 20-30 developers, distributed across three continents. If taken as an ideal kernel, however, Scheme succeeded beyond the team's expectations. It proved easy to extend the language with
- the first mixin class system;
- a component (or module) system, as sophisticated and expressive as ML's;
- a powerful macro system for meta-programming
- the first practical system of delimited control
- and many more constructs that heavily influence the next-generation
Scheme report.
The most remarkable feature of these remains the macro system. It provides far more expressive power than Lisp's S-expression manipulation system, Scheme 84's hygienic extend-syntax macros, or R5RS's syntax rules. Indeed, it is fair to say that the macro system is a carefully tuned API for the compiler. Using this compiler API, programmers can add features and entire domain-specific languages in a manner that makes them completely indistinguishable from built-in language constructs. For example, both the class system and the component system are nothing but macro libraries.
In addition to research on programming languages, PLT also used its infrastructure to investigate programming patterns, interactive web programming, refactoring, and many more topics.
Scripting
Over the years, PLT and PLT Scheme programmers have also turned the language into a scripting tool. PLT Scheme is now a viable alternative for scripting the Unix shell; web servers; slide show presentations; psychology experimentation software; and some others.
PLT Scheme now includes libraries like all common scripting languages. For the last three years, PLT has also maintained PLaneT, a web-based module repository that is smoothly integrated with its module/library system. PLaneT is quickly growing and has attracted a large following.