[Haskell-cafe] are some of these "reverse" algos better than others? is there a quick and dirty way to reveal this fact?

Felipe Almeida Lessa felipe.lessa at gmail.com
Sun Sep 23 07:30:38 EDT 2007


On 9/23/07, Lennart Augustsson <lennart at augustsson.net> wrote:
> If we're discussing bad versions of reverse, don't forget this one:
>
> rev [] = []
> rev (x:xs) =
>     case rev xs of
>     [] -> [x]
>     y:ys -> y : rev (x : rev ys)
>
> It's different from most versions of reverse because it doesn't use any
> auxiliarry functions.
> It's also extremely inefficient.

Wow! I'm amazed, this function runs in exponential time! How does one
actually comes to write it without smelling something wrong with those
recursive calls?

-- 
Felipe.


More information about the Haskell-Cafe mailing list