rewrite Haskell parts in Scala