updated intro to haskell