我有以下一段代碼:秒差距不解析換行符
import Text.ParserCombinators.Parsec
import Control.Applicative hiding ((<|>))
import Control.Monad
data Test = Test Integer Integer deriving Show
integer :: Parser Integer
integer = rd <$> many1 digit
where rd = read :: String -> Integer
testParser :: Parser Test
testParser = do
a <- integer
char ','
b <- integer
eol
return $ Test a b
eol :: Parser Char
eol = char '\n'
main = forever $ do putStrLn "Enter the value you need to parse: "
input <- getLine
parseTest testParser input
但是當我真正嘗試在ghci
解析自己的價值,這是行不通的。
ghci > main
Enter the value you need to parse:
34,343\n
parse error at (line 1, column 7):
unexpected "\\"
expecting digit or "\n"
關於我在這裏失蹤的任何想法?
從'getLine'獲取輸入時不會有換行符,這可能是問題嗎? – bheklilr
'getLine'爲你提供沒有行結束符的字符串,所以你不需要'eol'解析器。 – sergeyz
你是在輸入一個換行符還是一個\後跟一個n?這就是錯誤信息似乎表明的。 –