[Haskell-cafe] Why is this so inefficient?