bff: Bidirectionalization for Free! (POPL'09)

[ data, library, public-domain ] [ Propose Tags ]
Versions 0.1, 0.2, 0.3, 0.3.1,,
Dependencies base (>=2 && <5), benchpress (>=, bimap (>=0.2.3), category‑extras (>=0.53.5), cgi, Chart (>=0.12), colour, containers, data‑accessor, derive (==0.1.1), directory, haskell98, hint (>=0.3.2), mtl, template‑haskell, unix, utf8‑string, xhtml [details]
License LicenseRef-PublicDomain
Author Janis Voigtlaender, Joachim Breitner
Maintainer Janis Voigtlaender
Category Data
Uploaded by DanielSeidel at Tue Mar 22 08:48:05 UTC 2011
Distributions NixOS:
Executables bff-stats-render, bff-stats-print, bff-stats, bff-cgi, bff-shell
Downloads 2381 total (20 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-10-27 [all 9 reports]
Hackage Matrix CI

This is an implementation of the ideas presented in "Bidirectionalization for Free!" (paper at POPL'09) by Janis Voigtlaender.

It also includes an automatic deriver for the Zippable type class.

Using the cabal flag "binaries" will enable the creation of a web frontend to bff, in the form of a CGI program. Make sure you understand the security implications before allowing untrusted access to the script.

Using the cabal flag "stats" will generate programs that collect performance statistics about bff and print them as a table.

Using the cabal flag "render" will generate a program that renders collected performance statistics as PDF files.

You may also want to check out later work combining the implementation here with other methods:


  • Data
    • Data.Bff
    • Data.IntMapEq
    • Data.IntMapOrd
    • Data.Zippable
  • SimpleTree



Build the binaries bff-shell and bff-cgi


Build the stats-generating and -printing programs


Build the stats-rendering program


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees