getMultiWordPortion :: String -> String
getMultiWordPortion (x:':':xs) = xs
getMultiWordPortion _ = ""
Il risultato atteso dalla corrispondenza del modello in questo codice è che tutto prima che i primi due punti vengano assegnati a x, e che in seguito viene assegnato a xs, che è il risultato. Se non ci sono due punti, non viene restituito nulla.Haskell Pattern Matching su stringhe - Perché non funziona?
Ciò che effettivamente accade con una stringa di esempio che sto usando ("PING: gibson.freenode.net" - fa parte di un client IRC) è che ottengo il valore di ritorno vuoto.
Cosa sto facendo di sbagliato qui?
Forse, questo aiuterà: http://stackoverflow.com/questions/1602243/pattern-matching-string-prefixes-in-haskell –
FWIW, linguaggi logici (ad esempio Prolog, Curry) sono quelli che possono fare questo tipo di abbinamento di modelli. È piuttosto bello quando è disponibile tutta la potenza dei pattern (non da prendere come critica a Haskell) – luqui