Fork me on GitHub

What is husk?

husk is a practical implementation of the Scheme programming language for the Haskell Platform. A superset of the R5RS standard is provided, along with most of the R7RS standard. Advanced features include:

  • First-class continuations of unlimited extent
  • Hygienic macros based on syntax-rules
  • Low-level explicit renaming macros
  • Library syntax from the R7RS standard
  • A foreign function interface (FFI) to Haskell
  • Full numeric tower providing support for real, rational, and complex numbers
  • Proper tail recursion and lexical scoping
  • Read-Eval-Print-Loop (REPL) interpreter, with input driven by Haskeline to provide a rich user experience
  • Standard library of Scheme functions, and support for many popular SRFI's

Husk may be used as either a stand-alone interpreter or as an extension language within a larger Haskell application, and is available under the MIT license.

Background

Scheme is one of two main dialects of Lisp. Scheme follows a minimalist design philosophy, with the core language consisting of a small number of fundamental forms. Scheme is an excellent language for writing small, elegant programs, and may also be used to develop domain-specific languages or embed scripting functionality within a larger application.