The haskeem package

[Tags: gpl, program]

This is a moderately complete small scheme interpreter. It implements most of R6RS, with the exception of call/cc. It is however starting to have a set of delimited continuations, reset/shift et al. It has a macro system, although not R6RS hygienic macros. It is also not necessarily fully tail-recursive; so it's not industrial-strength. For playing with or learning scheme, it should be pretty good.

[Skip to ReadMe]


Versions0.6.10, 0.7.0, 0.7.4, 0.7.5, 0.7.7, 0.7.9, 0.7.12, 0.7.16
Change logNone available
Dependenciesbase (==4.*), containers, directory, haskeline, haskell98, mtl, network, old-time, parsec, process, random, unix [details]
AuthorUwe Hollerbach <>
MaintainerUwe Hollerbach <>
Home page
UploadedSat Aug 8 05:16:23 UTC 2009 by UweHollerbach
Downloads1375 total (38 in last 30 days)
0 []
StatusDocs not available [build log]
All reported builds failed as of 2015-11-20 [all 5 reports]


Maintainers' corner

For package maintainers and hackage trustees

Readme for haskeem-0.7.12

This is haskeem, a small scheme interpreter. It lives on the web at

You should be able to build it with

    cabal configure
    cabal build

Once you have done so, find the haskeem executable and run it.
At the "lisp> " prompt, type (assuming you are still in the top-level
haskeem directory)

    (load "stdlib.scm")
    (load "selftest.scm")

The first command loads haskeem's standard library, and the second command
runs the self-test. Assuming that all works, you can automate some of this:
copy the haskeem executable and the stdlib.scm file to some standard
location(s), and then set the environment variable HASKEEM_INIT to the
absolute path of the stdlib.scm file. I store both the haskeem executable
and the stdlib.scm file in /home/uwe/tools, which is in my PATH, and thus
I set HASKEEM_INIT to /home/uwe/tools/stdlib.scm. Then I (and you) can launch
haskeem from any directory.

If you do not have haskeline installed, don't panic! There is an alternate
version of the main module in the file haskeem_readline.hs. That provides
either a binding to the gnu readline library, or an alternate REPL with no
line-editing capability at all. You'll need to rename this to haskeem.hs,
edit it to select which of the two you want, and rebuild.

Sorry, no bindings to editline.