A framework for generic solvers and optimisers in Haskell