페이지에서 우리는 함수 item
을 파서로 정의합니다. 함수는 String
이고 실패하면 [(Char, String)]
또는 []
을 반환합니다. 78 페이지에하스켈에서 프로그래밍의 함수 파서 예제
우리는 함수 술어 p
와 "랩"나는 <-
의 마법 이해하지 않는 무슨
p :: (Char -> Bool) -> Parser Char
sat p = do x <- item
if p x then return x else failure
주위를 파서 건설 소요 sat
을 정의? item
의 결과가 비어 있지 않으면이 연산자는 목록을 언랩하고 튜플에서 첫 번째 항목을 가져와야합니다. 그렇지 않으면 술어를 질식시키지 않는 무언가가 생성됩니다. 내가 뭘 놓치고 있니?
item >>= (\x -> if p x then return x else failure)
>>=
모나드는 결합 연산자이기
당신이 Graham Hutton의 "Programming in Haskell"을 사용하고있는 것처럼 보입니다. Graham은이 장에서 간단하게 Haskell이 아닌 간략화를 사용합니다.이 장의 마지막 부분 (8.9 절)과 Graham의 웹 페이지에서 직접 실행 가능한 Haskell에 대한 온라인 코드를 참조하십시오. –