Use web link relation types (RFC 5988) in Haskell

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

PublicDomain licensed by fr33domlover

See the .cabal file for more info and link to project website the version control.

The official download location is Hackage.

This library is free software, and is committed to software freedom. It is released to the public domain using the CC0 Public Domain Dedication. For the boring "legal" details see the file COPYING.

See the file INSTALL for hints on installation. The file ChangeLog explains how to see the history log of the changes done in the code. provides a friendly overview of the changes for each release.

How to Release

This package's source code is auto-generated using 3 files:

  1. A Haskell source file template
  2. CSV file containing the IANA link relation registry data
  3. A Haskell program which embeds the data into the template as Haskell code

All 3 files are found in the util/ directory.

(1) Update the source

(2) Update version and date

If you downloaded a new CSV version, update the lastUpdated value in the generator program. You can find that date at

Update the package version number in the .cabal file. Use darcs diff to examine the changes in the generated source and pick a version number according to PVP. The most common change in the registry will probably be new link relations added, which means new API functions and therefore an increase of the minor version number (i.e. 3rd number, e.g. / becomes / That's because the LinkRelation constructors themselves aren't exported.

(3) Adjust other config

Near the top of the generator program file there is a configuration section (e.g. the update date, file paths, etc.). If you made any changes which require updates there, make the required modifications.

(4) Build and test

The generator program depends on the cassava package. The other dependencies are also dependencies of cassava (primarily bytestring and vector), which means you can install the dependencies like this:

$ cabal install cassava

Run the generator program from the package toplevel. Either using the interpreter:

$ runhaskell util/generate.hs

Or like this, if you installed cassava into a sandbox:

$ cabal exec runhaskell util/generate.hs

Examine the result. Switch between the old generated source and the new one (which is generated as a separate file in the same directory).

Build the library itself:

$ cabal build

(5) Record everything into the Darcs repo, make a tag, make a tarball etc.

As usual. Note that the 3 files in util/ (i.e. including the CSV data) and the generated source in src/, are all kept in the Darcs repo.


The changes are recorded by the version control system, Darcs. To see a log
quickly from the terminal, run:

$ darcs changes --repo

There is also a web interface at <> which, among other
things, can display the history log.

To see the log in a local clone, first get a copy of the repository if you
haven't yet:

$ darcs get

Then move into the newly created directory and run darcs:

$ cd link-relations
$ darcs changes
comments powered byDisqus