我想解析一些文本,其中某些字段在大多數情況下都會有結構但偶爾會出現這種結構(由於特殊的外框,拼寫錯誤等)結構缺失。創建Parser a - > Parser b - > Parser的解析器組合器(或者ab)
E.g.正常情況下是Cost: 5
,但偶爾會讀取Cost: 5m
或Cost: 3 + 1 per ally
或其他一些隨機的東西。
在普通解析器(p)無法正常工作的情況下,我想回退到只將整行作爲字符串的解析器。
爲此,我想創建一個類型爲Parser a -> Parser b -> Either a b
的組合器。但是,我無法解決如何檢查第一個解析器是否成功的結果,而不需要執行諸如case parse p "" txt of ...
之類的操作。
我看不到在組合子的生成,但我敢肯定,有一些簡單的方法來解決這個問題,我很想念
忽略此評論 - 發佈之後我想到了這件事,但是GHC不能簡單地將a和b統一爲(fmap Left foo)::或者ab,(fmap右欄)::任一ab – Squidly
@MrBones你能澄清你的意思?這對我來說編譯得很好 – jozefg
我錯了,當我交換參數a和b時,我沒有更正類型簽名。 – Squidly