> For the complete documentation index, see [llms.txt](https://isubasinghe.gitbook.io/isithas-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://isubasinghe.gitbook.io/isithas-wiki/software_engineering/languages/racket.md).

# Racket

## Basic idea

A descendant of Scheme aimed at language-oriented programming. Comes with a powerful hygienic macro system (`syntax-parse`), a contract system, and tools (`#lang`) for defining whole new languages that interoperate.

## Key facts

* Year: 1995 (as PLT Scheme); renamed Racket in 2010.
* Paradigm: functional (mostly), but supports OO, logic, lazy via dialects.
* Typing: dynamic by default; Typed Racket adds gradual static types.
* Macros: hygienic; phase-separated compilation.
* "Language workbench" — `#lang` declares which Racket dialect.
