いろいろやってるときにできた副産物。無限リストでも大丈夫。
mergeSortN :: Ord a => [[a]] -> [a]
mergeSortN = foldl1 mergeSort2
mergeSort2 :: Ord a => [a] -> [a] -> [a]
mergeSort2 a [] = a
mergeSort2 [] b = b
mergeSort2 (a:aa) (b:bb) | a <= b = a : mergeSort2 aa (b:bb)
| otherwise = b : mergeSort2 (a:aa) bb