축구 점수를위한 작은 파서를 쓰고 싶습니다.하스켈 - 작은 파서 작성
예를 들어 입력 "0:2"
은 Just (Score 0 2)
으로 구문 분석되어야합니다. "3:3"
과 같은 것이 있으면 "Nothing"
을 제공해야합니다. 그 밖의 모든 것은 나에게 "Nothing"
도 줘야한다.
data Score = Score Int Int
deriving (Eq,Show,Ord)
runParsec :: Parser a -> String -> Maybe a
runParsec parser input = case runP parser() "" input of
Left _ -> Nothing
Right a -> Just a
인수는 지금까지 다음과 같습니다 나는이 runParsec을 줄 파서 : parseScore이 코드가 작동 할 수 없음을
parseScore :: Parser Score
parseScore str1 = case str1 of
"x:y" && (x /= y) -> Right Score x y
Otherwise -> Left x
나도 알아. 왜냐하면 나는 "x : y"와 같은 문자열과 패턴 매치를 할 수 없기 때문이다. 그러나이 문제를 어떻게 해결할 수 있습니까?
runParsec parseScore "0:2"
나에게 Just (Score 0 2)
내가 힌트를 감사 해요를 제공해야합니다.
감사합니다.
'3 : 3'은 '점수 3 3'또는 '아무것도 없음'을 제공해야합니까? – Sibi
아무 것도. "5 : 1"- 그냥 (점수 5 1)/"3 : 3"- 아무것도 아닙니다./"우후허에"- 아무것도. – fuuman
'3 : 3'이 유효한 점수 일 때 왜 '아무것도'하지 않아야합니까? – Lee