updated haskell code