You can use trace from Debug.Trace, change the code like this:

mergesort l = case trace l l of
    [] -> ...
    [x] -> ...
    (x:xs) -> ...

On Sun, Feb 5, 2012 at 2:23 AM, Qi Qi <qiqi789@gmail.com> wrote:
Hello,

I have a question;how can I print out the intermediate number lists in a
mergesort recursive function like the following one.

merge [] ys = ys
merge xs [] = xs
merge (x:xs) (y:ys) = if x <= y
                     then x : merge xs (y:ys)
                     else y : merge (x:xs) ys

mergesort [] = []
mergesort [x] = [x]
mergesort xs = let (as, bs) = splitAt (length xs `quot` 2) xs
              in merge (mergesort as) (mergesort bs)

main = do
      print $ mergesort [5,4,3,2,1]


In the main function, it only prints out the final number list. But I'd
like to print out the number lists in every recursive level. How can I
do that? Thanks.


--
Qi Qi

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe



--
http://www.yi-programmer.com/blog/