Downloads

Maintainer's Corner

Readme for husk-scheme

Readme for husk-scheme-3.4

husk is a dialect of Scheme written in Haskell that implements a subset of the R<sup>5</sup>RS standard. Advanced R<sup>5</sup>RS features are provided including continuations, hygienic macros, and a full numeric tower.

husk provides many features and is intended as a good choice for non-performance critical applications, as it is not a highly optimized Scheme. Rather, the goal of the project is to provide a tight integration between Haskell and Scheme while at the same time providing an opportunity for deeper understanding of both languages. In addition, by closely following the R<sup>5</sup>RS standard, the intent is to develop a Scheme that is as compatible as possible with other R<sup>5</sup>RS Schemes.

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 the 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.

Full numeric tower: includes support for parsing/storing types (exact, inexact, etc), support for operations on these types as well as mixing types and other constraints from the R<sup>5</sup>RS specification.

Hygienic Macros: High-level macros via define-syntax - Note this is still somewhat of a work in progress - Macro support has improve significantly in the last few releases, and it works well enough that many derived forms are implemented in our standard library, but you may still run into problems when defining your own macros.

Development

cabal-install may be used to build, deploy, and generate packages for husk.

Haskeline - which may be installed using cabal: cabal install haskeline

The scm-unit-tests directory contains unit tests for much of the scheme code. All tests may be executed via make test command.

The examples directory contains example scheme programs.

Patches are welcome! Please send them via a pull request on github. Also, when making code changes please try to add at least one test case for your change, and ensure that the change does not break any existing unit tests.