1 The Hackett Guide

Hackett is a high-level, general-purpose programming language designed for writing programs in many domains, and it is designed to scale nicely from small programs to large, complex systems. Its name is a portmanteau that hints at its philosophy and heritage:

Hackett not only combines features from both Haskell and Racket, it interleaves and synthesizes them to provide an even more powerful type system and even more powerful macros. Since the Hackett typechecker is actually a part of macroexpansion, macros both have access to type information and can influence the typechecking process.

This guide serves as a relatively gentle introduction to Hackett, and it assumes no prior experience with either Haskell or Racket. Familiarity with either language will, of course, help.

    1.1 Quick Start

      1.1.1 Simple Definitions

    1.2 Hackett Essentials

      1.2.1 Infix Syntax

    1.3 Working with data

      1.3.1 Enumerations

      1.3.2 An introduction to lists

      1.3.3 Representing operations that can fail

    1.4 Partial Functions and Nontermination