Racket
Racket では関数型のコア言語,に加え、以下のような幅広い種類の構造を自由に統合させている。
mixin クラスシステム。
Standard MLのように洗練されて表現力豊かなコンポーネント(モジュール)システム。
高階言語用としては初めてのコントラクトシステム。
メタプログラミングのためのパワフルなマクロシステムをもつ。
実用的なシステムとして、最初に部分継続を実装した。
もっとも注目すべき特徴は、マクロシステムにある。Racketのマクロシステムは、伝統的なLispのS式操作マクロシステムや、Scheme 84のハイジーンなextend-syntaxマクロ、R5RSのsyntax-rules構文と比べても強力な表現力を有する。実際に、マクロは注意深く調整されたコンパイラ拡張 API といっても差し支えがないものである。このコンパイラAPIを使うことで, プログラマーは機能の追加と、ドメイン固有言語そのものの追加をすることができる。そのような機能はビルトインになっている言語要素と完全に区別できないほど、環境に統合される。例えば、Racketのライブラリではクラスオブジェクトシステムとコンポーネントシステムはマクロとして実装されている。
また、Racketはプログラミング言語に関する実験だけでなく, プログラミングのパターン、インタラクティブなWebプログラミング、リファクタリング、などのトピックを調査するための基盤環境として使われた。
Racket を開発したPLT project は、1990年代中ごろに, Matthias Felleisenによってまず研究グループとして立ち上げられ、その後すぐに、プロジェクトは初心者プログラマ向けの教育用マテリアル(レクチャー、演習課題や自由課題、ソフトウェア)を製作するのに注力した。 1995年1月, グループは教育用途のプログラム環境を開発することにした。 Matthew Flatt はlibschemeのMrEdと、wxWidgets、およびいくつかのフリーなシステムをバンドルした。開発の決定から何年かかけて、Flatt, Robby Findler, Shriram Krishnamurthi, Cormac Flanaganら数多くの人々によるチームによって、 Scheme の初心者向けプログラミング環境・ソフトタイピングの実験環境DrSchemeが作られた。
同時に, PLTのチームは高校教師向けのワークショップを行い、プログラムデザインと関数プログラミングを指導した。