hfusion- A library for fusing a subset of Haskell programs.



Version 0.0.6

This version contains several tweaks and fixes as a result of fusing the example of game trees in John Hughes's paper Why Functional Programming Matters.


  • Lists missing file in hfusion.cabal.

Version 0.0.5

  • Implements searching and fusing explicit compositions of hylomorphisms in expressions. E.g.
 ... map f (filter p (map g xs)) ...

but not

 ... map f . filter p . map g ...


 h = map f
 k = filter p
 ... h (k (map g xs)) ...
  • Fixes fusion of tails . map with tails defined as:
   tails :: [a] -> [[a]]
   tails [] = []
   tails xs@(_:xss) = xs : tails xss
  • Fixed derivation of mutual hylos from definitions where each one uses a different set of names for the constant arguments.
  • Fixed pretty printing of terms in the presence of infix constructors. HFusion doesn't support specifying precedences and associativity for infix operators really. I've tried to have the common infix operators ((:),(+),(*),(-),(^),(++)) printed resonably, however.

Version 0.0.4

  • Fuses spoon-feeded compositions.