這爲什麼會失敗?爲什麼使用減號解析字符串會失敗?
data Value = Num Integer
| Str String
let numberOrString = (liftM Num (try int) <|> liftM Str (many1 (noneOf " "))
parse (numberOrString >> space) "" "123-4 "
>> space
是必需的。否則解析器將停止後123
預期結果:
parse numberOrString "" "1234"
-> Num 1234
parse numberOrString "" "12-34"
-> Str "12-34"
結果:
parse numberOrString "" "1234-34 "
-> Left (line 1, column 5):
unexpected "-"
expecting digit or space
(字符串是2整數文字的事實是無關緊要的,它與「1234a34」'完全相同的失敗。) – huon
不完全是一個解決方案,但我給出的是一個問題,爲什麼它沒有奏效。這讓我走上了正軌。謝謝! – fho