我想解析用户输入的字符串像“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