Как разобрать кортеж (String, Int) в Haskell с помощью parsec

Я думаю, что мне уже удалось разобрать строки в строки и строки в Ints, но мне также нужно проанализировать тип (String, Int), поскольку userRatings для того, чтобы правильно читать из textFile, и я использую Parsec

Это разбор вместе с импортом

import Text.Parsec
( Parsec, ParseError, parse        -- Types and parser
, between, noneOf, sepBy, many1    -- Combinators
, char, spaces, digit, newline     -- Simple parsers
)

-- Parse a string to a string
stringLit :: Parsec String u String
stringLit = between (char '"') (char '"') $ many1 $ noneOf "\"\n"

-- Parse a string to a list of strings
listOfStrings :: Parsec String u [String]
listOfStrings = stringLit `sepBy` (char ',' >> spaces)

-- Parse a string to an int
intLit :: Parsec String u Int
intLit = fmap read $ many1 digit
-- Or `read <
import Text.Parsec
( Parsec, ParseError, parse        -- Types and parser
, between, noneOf, sepBy, many1    -- Combinators
, char, spaces, digit, newline     -- Simple parsers
)

-- Parse a string to a string
stringLit :: Parsec String u String
stringLit = between (char '"') (char '"') $ many1 $ noneOf "\"\n"

-- Parse a string to a list of strings
listOfStrings :: Parsec String u [String]
listOfStrings = stringLit `sepBy` (char ',' >> spaces)

-- Parse a string to an int
intLit :: Parsec String u Int
intLit = fmap read $ many1 digit
-- Or `read <$> many1 digit` with Control.Applicative

film :: Parsec String u Film
film = do
-- alternatively `title <- stringLit <* newline` with Control.Applicative
title <- stringLit
newline
director <- stringLit
newline
year <- intLit
newline
userRatings <- listOfStrings
newline
return (title, director, year, userRatings)
gt; many1 digit` with Control.Applicative film :: Parsec String u Film film = do -- alternatively `title <- stringLit <* newline` with Control.Applicative title <- stringLit newline director <- stringLit newline year <- intLit newline userRatings <- listOfStrings newline return (title, director, year, userRatings)

Ответы на вопрос(1)

Ваш ответ на вопрос