[Haskell-cafe] Optimization with Strings ?

Emmanuel CHANTREAU echant+haskell at maretmanu.org
Thu Dec 3 10:23:56 EST 2009

Le Thu, 3 Dec 2009 13:20:31 +0100,
David Virebayre <dav.vire+haskell at gmail.com> a écrit :

> It doesn't work this way : Strings are just lists of Chars. Comparison
> is made recursively, Char by Char. You can have a look at the source
> to make sure :
> instance (Eq a) => Eq [a] where
>     []     == []     = True
>     (x:xs) == (y:ys) = x == y && xs == ys
>     _xs    == _ys    = False


Thank you David and Bulat for your answers.

I don't see the proof you see. Because GHC could store two sames
objects juste once and by the definition of == on lists it could deduce
that "forall x; List x => x==x". GHC have all informations to do this
optimization job, because haskell functions definitions are mathematics

Bulat says that this optimization is not done, so I will do it by my
hands (ho my poor lazy hands).

Emmanuel Chantréau

More information about the Haskell-Cafe mailing list