3
내 attoparsec 파서에서 일부 추적/디버깅을하고 싶습니다. 여기에 최소한의 작업 예제가 있습니다 :attoparsec Parser에 IO를 올바르게 추가하는 방법은 무엇입니까?
import Data.Text as T
import Data.Attoparsec.Text
import Data.Attoparsec.Combinator
import Control.Applicative ((<*), (*>))
parseSentences :: Parser [T.Text]
parseSentences = many1 $ takeWhile1 (/= '.') <* char '.' <* skipSpace
parser :: Parser [T.Text]
parser = do
stuff <- parseSentences
-- putStrLn $ "Got stuff: " ++ show stuff
tail <- takeText
-- putStrLn $ "Got tail: " ++ show tail
return $ stuff ++ [tail, T.pack "more stuff"]
main = do
let input = T.pack "sample. example. bang"
print $ parseOnly parser input
파서에서 IO 작업을 사용하려면 어떻게해야합니까?
확인을 클릭하십시오. 하지만 원래 코드에서와 같이 파서 쿼리 사이에서 어떻게 처리 할 수 있습니까? 추적하고 거기에서 산출물을 얻기 위해 먹이를주는 일은 없을까요? – wiz
당신은'trace "를 할 수 있습니다 ..."$ return()'아마도 ... – dflemstr
고마워요! 그게 잘 됐어! – wiz