Provide an unique self-contained merge sort Haskell program