[Haskell] ADPfusion: Efficient, high-level dynamic programming