왜 이것이 실패합니까?왜 마이너스가있는 문자열의 구문 분석이 실패합니까?
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
(문자열이 정수 리터럴이라는 사실은 부적합합니다. 정확하게''1234a34 ''와 똑같은 방식으로 실패합니다.) – huon
정확하게 해결책은 아니지만 제가 준 것은 그것이 효과가 없었던 이유입니다. 그것으로 나는 올바른 길로 나를 잡았다. 감사! – fho