Circular Functional Programming

Circular Programs were first proposed by Richard Bird as an elegant and efficient technique to eliminate multiple traversal of data structures.

More detailed information about Circular Programs may be found here.

We have developed the following approaches to circular programming:

  • CircLib : an Haskell based library that implements the scheduling of circular definitions.

This library can be reused to build a full Haskell -based attribute grammar system. It is also the building block for the two developed tools:

  • OCirc : a (prototype) tool for the strictification of lazy circular Ocaml programs (online testing available (best displayed in firefox)).

  • HaCirc : a (prototype) tool for the strictification and slicing of lazy circular Haskell programs (online testing available (best displayed in firefox)).

We are working on the following articles on circular programming:

  • Calculating Circular Programs (in preparation).