我正在撰写自己的计划,并在this page上练习4。将readHex添加到Parsec分析器
我该如何解决这个问题?我有这么远,但不知道readHex
应该去哪里,我必须liftM
吗?你是否匹配解析器?
parseNumber = liftM (Number . read) $ choice [many1 digit, char '#' >> oneOf "hd" >>= a]
where a f = case f of
'h' -> many1 digit
另外,我不认为你可以在Parser LispVal
功能适用<|>
,对不对?
由于'readHex :: Num a => String - > [(a,String)]'的类型,它并不是非常简单。看[这个问题](http:// stackoverflow。com/questions/7181390/pattern-matching-against-monadic-result)如何处理这个问题。 – hammar
啊,我不知道readHex的类型签名。 – bzn
谢谢!现在更接近理解!如果没有其他问题,请立即接受您的答案 – overscore