getMultiWordPortion :: String -> String
getMultiWordPortion (x:':':xs) = xs
getMultiWordPortion _ = ""
此代碼中模式匹配的預期結果是,第一個冒號get之前的所有內容都被分配給x,之後的所有內容都被分配給xs,這就是結果。如果沒有冒號,則不返回任何內容。字符串上的Haskell模式匹配 - 爲什麼這不起作用?
與我使用的樣本串居然會發生什麼(「PING:gibson.freenode.net」 - 這是一個IRC客戶端的一部分)是我得到的空白返回值。
我在這裏做錯了什麼?
也許,這將有助於:http://stackoverflow.com/questions/1602243/pattern-matching-string-prefixes-in-haskell – 2010-09-05 13:03:23
FWIW,邏輯語言(如Prolog,Curry)是可以做的這種模式匹配。當模式的全部功能可用時,這非常酷(不要視爲對Haskell的批評) – luqui 2010-09-05 13:35:10