"A12"와 같은 사용자 입력 문자열을 ('A', 12)와 같은 하스켈 튜플에 구문 분석하려고합니다.하스켈에서 사용자 입력을 구문 분석
import Data.Maybe
type Pos = (Char, Int)
parse :: String -> Maybe Pos
parse u = do
(c, rest) <- (listToMaybe.reads) u
(r, _) <- (listToMaybe.reads) rest
return $ (c, r)
을하지만 항상 반환 값 없음 :
는 여기에 내가 시도거야. 왜 이런 일이 일어나고이 문자열을 파싱하는 올바른 방법은 무엇입니까? 이것은 매우 간단하기 때문에 Parsec이나 유사한 고급 구문 분석 라이브러리를 사용하지 않는 것이 좋습니다.
EDIT (명확히) 샘플 입력 및 출력 :
"A12"
은 Just ('A', 12)
"J5"
는 Just ('J', 5)
"A"
가 Nothing
"2324"
가 Nothing
내 뜻을 명확히하는 질문의 편집을 참조하십시오. 또한 "read xs :: Int"는 예외를 생성하는 위의 대답에서 실패 할 수 있습니다. 그 경우에는 Nothing을 얻고 싶습니다. – donatello