getMultiWordPortion :: String -> String
getMultiWordPortion (x:':':xs) = xs
getMultiWordPortion _ = ""
El resultado esperado de la coincidencia de patrones en este código es que todo antes de los primeros dos puntos se asigna a x, y todo se asigna a xs, que es el resultado. Si no hay dos puntos, no se devuelve nada.Haskell Pattern Matching en cadenas - ¿Por qué esto no funciona?
Lo que realmente ocurre con una cadena de muestra que estoy usando ("PING: gibson.freenode.net" - es parte de un cliente de IRC) es que obtengo el valor de retorno en blanco.
¿Qué estoy haciendo mal aquí?
Tal vez, esto ayude: http://stackoverflow.com/questions/1602243/pattern-matching-string-prefixes-in-haskell –
FWIW, los lenguajes lógicos (por ejemplo, Prolog, Curry) son los que pueden hacer este tipo de coincidencia de patrón. Es muy bueno cuando todo el poder de los patrones está disponible (no debe tomarse como una crítica de Haskell) – luqui