As the world’s first ecosystem for language-oriented programming, Racket has been used to create dozens of programming languages.
Languages added to the Racket package system are automatically added to the Racket Documentation.
The following is a selection of of languages built with Racket including languages with different syntax (Java, Algol 60), semantics(Racklog and Datalog), tooling (ffmpeg for Video and solvers for Rosette), and targets other than the racket platform (Javascript, 6502).
The “Algol 60” language for DrRacket implements the language defined by the “Revised Report on the Algorithmic Language Algol 60,” edited by Peter Naur.
Asi64 is a cross-platform 6502 assembler. Primarily aimed at programming the Commodore 64, with VICE emulator support.
Datalog is a declarative logic language in which each formula is a function-free Horn clause, and every variable in the head of a clause must appear in the body of the clause. Datalog is also a lightweight deductive database system where queries and database updates are expressed in the logic language.
Hackett is a purely functional, statically typed, lazily evaluated programming language. It provides powerful, bidirectional type inference, algebraic datatypes, pattern matching, typeclasses, and higher-rank polymorphism.
The Heresy language is a functional Lisp/Scheme dialect implemented in Racket, with syntax inspired by the BASIC family of programming languages.
The Lindenmayer language provides a language for running and interpreting Lindenmayer Systems.
Parenlog in an implementation of a language very similar to pure Prolog, except with parenthetical notation.
Pie is a little language with dependent types that accompanies The Little Typer.
The Pollen language is markup-based, so you can write & edit text naturally. But when you want to automate repetitive tasks, add cross-references, or pull in data from other sources, you can access a full programming language from within the text.
ProfessorJ is a plug-in for DrRacket that implements variants of Java, especially for teaching purposes.
A lightweight Racket to JavaScript compiler.
Rash is a shell language embedded in Racket. It has a concrete syntax that is amenable to quick and easy interactions without lots of punctuation overhead. It aims to allow shell-style interaction and programming to be freely mixed with more general-purpose Racket code.
Riposte is a scripting language for evaluating JSON-bearing HTTP responses.
Scratchy provides a Scratch-like runtime environment plus a simple textual programming language. It was developed as an example of creating a language in Racket.
Syndicate is an Actor-based programming language for interactive programs.
Video is a language for making movies. It combines the power of a traditional video editor with the capabilities of a full programming language. Video integrates with the Racket ecosystem and extensions for DrRacket to transform it into a non-linear video editor.
‘Meta-DSL’s’ are languages that can be used to create languages.
The Turnstile language aims to help Racket programmers create typed languages. It does so with extensions of Racket’s macro-definition forms that facilitate implementation of type rules alongside normal macro code.
“Rosette is a solver-aided programming language that extends Racket with language constructs for program synthesis, verification, and more. To verify or synthesize code, Rosette compiles it to logical constraints solved with off-the-shelf SMT solvers. By combining virtualized access to solvers with Racket’s metaprogramming, Rosette makes it easy to develop synthesis and verification tools for new languages. You simply write an interpreter for your language in Rosette, and you get the tools for free!”. See Growing Solver-Aided Languages with Rosette by Emina Torlak & Rastislav Bodik.