Я новичок Haskell, и я пытаюсь узнать о Parse c, написав парсер, который может использовать или арабскую c цифру, например, "234", или римскую, например, "MCMLXIX." Я нашел библиотеку римских цифр , и поэтому я решил, что я попытаюсь как-то использовать функцию fromRoman
в сочетании с Parse c, так как в конечном итоге мне понадобится арабский c эквивалент римской цифры. Но я просто пока не знаю, как заставить Maybe
вывод fromRoman
в Parser
. Это то, что у меня есть до сих пор:
import Text.Parsec
import Text.Parsec.Text (Parser)
import Text.Numeral.Roman
arabicNum :: Parser Int
arabicNum = do
n <- many1 digit
return (read n)
isChapter :: Inline -> Bool
isChapter str = str == Str "CHAPTER"
number :: Parser Int
number = arabicNum <|> romanNum
romanNum :: Parser Int
romanNum = do
str <- many1 char
return case (fromRoman str) of
Just n -> n
Nothing -> Nothing
Но, без кости, так как я еще не совсем знаю, что я делаю.