You call tail on numbers, which call merge with numbers as parameters, which calls tails on numbers, which calls merge, which calls tail....
In super lazy Haskell, when you pattern match, it does barely any work.