Racket
Language-oriented and functional programming
What it does
Racket provides a language-oriented programming environment with macros, modules, libraries, and the DrRacket development tool for exploring programs and designing domain-specific languages.
When to use it
For teaching or new syntax, use language and macro guides to connect expressions to your own language modules.