haskell fp ds