Comment puis-je définir correctement une chaîne vide en haskell?

Je vais avoir un problème avec mon programme et j'ai été capable d'isoler le problème. J'ai réussi à le réduire à ce simple problème. Disons que j'ai la fonction

fn:: String -> String
fn (x:xs)
    | null (x:xs) = "empty"
    | otherwise = "hello"

De taper dans des trucs aléatoires retourne "hello" mais si je le fais,

fn ""

- Je obtenir le non-exhaustive modèle d'erreur. Depuis "" est supposé être une liste vide, [], il ne devrait pas correspondre à mon premier modèle et le retour "empty"?

OriginalL'auteur bella | 2012-07-14