husk-scheme

R5RS Scheme interpreter, compiler, and library.

http://justinethier.github.com/husk-scheme

Latest on Hackage:3.20

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

MIT licensed by Justin Ethier
Maintained by Justin Ethier <github.com/justinethier>

Husk is a dialect of Scheme written in Haskell that implements a superset of the R5RS standard. Advanced features are provided including:

  • 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. By closely following the R5RS standard, the intent is to develop a Scheme that is as compatible as possible with other R5RS Schemes. Husk is mature enough for use in production, however it is not optimized for performance-critical applications.

Scheme is one of two main dialects of Lisp. Scheme follows a minimalist design philosophy: the core language consists of a small number of fundamental forms which may be used to implement other built-in forms. Scheme is an excellent language for writing small, elegant programs, and may also be used to write scripts or embed scripting functionality within a larger application.

For documentation and examples, see http://justinethier.github.io/husk-scheme/documentation.html.

For detailed information on each release, see http://justinethier.github.io/husk-scheme/news.html.