我正在撰寫自己的計劃,並在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