Überlappende Instanzen

Wegen String = [Char] gilt bisher

show 'f' = "'f'"
show "foo" = "['f','o','o']"
Erwünscht ist aber:
instance Show String where
    show cs = "\"" ++ cs ++ "\""
show "foo" = "\"foo\""
Diese Instanz-Deklaration überlappt mit generischer.

Für Show [Char] gibt es dann zwei Wörterbücher-- das ist grundsätzlich verboten:

in Standard Haskell dürfen generische Instanzen keine Typvariablen instanziieren.



Johannes Waldmann 2010-01-25