Advantages and challenges with Haskell