WARNING: The contents of this manual are considered unstable, experimental, and subject to change; compatibility will not be maintained.
Hackett is a statically typed, pure, lazy, functional programming language in the Racket language ecosystem. Despite significant differences from #lang racket, Hackett shares its S-expression syntax and powerful, hygienic macro system. Unlike Typed Racket, Hackett is not gradually typed—it is designed with typed programs in mind, and it does not have any dynamically-typed counterpart.
This manual is divided into two parts: The Hackett Guide, which provides a gentler, tutorial-style overview of Hackett’s language features, and The Hackett Reference, a precise and authorative specification of the language and all of the forms and functions provided in the standard library.
For those new to Hackett, even those already familiar with languages similar to Hackett, like Racket or Haskell, it is highly recommended you start with The Hackett Guide. For the precise details of various language features, The Hackett Reference may be more appropriate. However, neither is intended to be read from beginning to end, in order: both sections are indexed and searchable as well as internally cross-referenced, and links are provided in the margins to jump to corresponding companion sections, when available.