First of all, Raffa, welcome to the list. I hope your stay is friendly and that you'll derive benefit from it over the long-term.

This line that you wrote

         pack' (x:y) = extra x xs ++ pack' y

suggests that you might want to review the different between list-consing, which is the (:) function, and list-append, which is (++).

Especially for Haskell, you'll need to pay close attention to how the type signatures differ.

These concepts are very, very old and easily google-able.

A solid foundation in these fundamentals will make tackling the rest of the 99 problems so much easier.

-- Kim-Ee