我想解析用戶輸入的字符串像「A12」,到一個Haskell元組,像('A',12)。解析用戶輸入Haskell讀取
這是我曾嘗試:
import Data.Maybe
type Pos = (Char, Int)
parse :: String -> Maybe Pos
parse u = do
(c, rest) <- (listToMaybe.reads) u
(r, _) <- (listToMaybe.reads) rest
return $ (c, r)
但這總是返回Nothing。爲什麼會發生這種情況,解析這個字符串的正確方法是什麼?由於這很簡單,我想避免使用Parsec或類似的高級解析庫。
EDIT(澄清): 樣本輸入和輸出:
"A12"
給出Just ('A', 12)
"J5"
給出Just ('J', 5)
"A"
給出Nothing
"2324"
給出Nothing
請參閱問題中的編輯,說明我的意思。 另外,「read xs :: Int」在創建異常的上面的回答中可能會失敗。在這些情況下,我只想得到一個Nothing。 – donatello 2012-04-01 10:42:03