The hoopl package


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]


Dependenciesbase (>=4.3 && <4.11), containers (==0.5.*) [details]
AuthorNorman Ramsey, Joao Dias, Simon Marlow and Simon Peyton Jones
MaintainerNing Wang <>, Michal Terepeta <>, Norman Ramsey <>
Home page
Bug tracker
Source repositoryhead: git clone
UploadedSat Feb 11 23:18:41 UTC 2017 by NingWang



Maintainers' corner

For package maintainers and hackage trustees

Readme for hoopl-

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.