haskeem: A small scheme interpreter

[ compilers-interpreters, program ] [ Propose Tags ]

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]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.6.10, 0.7.0, 0.7.4, 0.7.5, 0.7.7, 0.7.9, 0.7.12, 0.7.16
Dependencies base (>=4 && <5), containers, directory, haskeline, haskell98, mtl, network, old-time, parsec, process, random, unix [details]
License LicenseRef-GPL
Author Uwe Hollerbach <uh@alumni.caltech.edu>
Maintainer Uwe Hollerbach <uh@alumni.caltech.edu>
Category Compilers/Interpreters
Home page http://www.korgwal.com/haskeem/
Uploaded by UweHollerbach at 2010-01-19T04:54:08Z
Reverse Dependencies 1 direct, 0 indirect [details]
Executables haskeem
Downloads 6289 total (13 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-30 [all 8 reports]

Readme for haskeem-0.7.16

[back to package description]
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.