The hoopl package

[ Tags: bsd3, compilers-interpreters, library ] [ Propose Tags ]

Higher-order optimization library

See Norman Ramsey, Joao Dias, and Simon Peyton Jones. "Hoopl: A Modular, Reusable Library for Dataflow Analysis and Transformation" (2010) for more details.

[Skip to Readme]


Change log
Dependencies base (>=4.3 && <4.11), containers (==0.5.*) [details]
License BSD3
Author Norman Ramsey, Joao Dias, Simon Marlow and Simon Peyton Jones
Maintainer Ning Wang <>, Michal Terepeta <>, Norman Ramsey <>
Category Compilers/Interpreters
Home page
Bug tracker
Source repository head: git clone
Uploaded Sun Oct 29 03:38:52 UTC 2017 by NingWang
Distributions Arch:, LTSHaskell:, NixOS:, Stackage:
Downloads 15749 total (1187 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-10-29 [all 1 reports]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees

Readme for hoopl-

[back to package description]

The hoopl Package Hackage Build Status

Hoopl: A Higher-Order OPtimization Library

API documentation can be found on Hackage. For detailed explanation of the library design see paper "Hoopl: A Modular, Reusable Library for Dataflow Analysis and Transformation"

| Directory | Contents | -------------- | --------- | src/ | The current official sources to the Cabal package | testing/ | Tests, including a sample client. See testing/README

Development Notes

Building and testing

To build the library run:

cabal configure
cabal build
cabal install --enable-documentation

To run the tests in the testing/ folder run:

cabal configure --enable-tests
cabal test

To run the tests with the test coverage report run:

cabal configure --enable-tests --enable-coverage
cabal test

You'll need a Haskell Platform, which should include appropriate versions of Cabal and GHC.

Coding style

Please follow Johan Tibell's Haskell Style Guide for all new/modified code.

Checklist for Making Releases

In order to facilitate GHC development's workflow, the version in hoopl.cabal is to be bumped as soon as a change requires a respective version bump (according to the PVP) relative to the last released hoopl version.

  1. Make sure hoopl passes Travis for all GHC versions in the build-matrix
  2. Update Changelog (& git commit)
  3. Generate source tarball via cabal sdist and upload a candidate to Hackage (see note below), and inspect the result.
  4. If everything checks out, make an annotated and GPG-signed Git release tag: git tag -a -s v${VER} -m "hoopl ${VER}"
  5. Publish (there's a button for that on Hackage) the package candidate
  6. Work on next release

Note: To upload to Hackage,

cabal sdist
cabal upload dist/hoopl-*.tar.gz

However, it's recommended use the Hackage feature for uploading a candidate.