25 lines
559 B
Haskell
25 lines
559 B
Haskell
module Main where
|
|
|
|
import Control.Applicative
|
|
import LearnParsers
|
|
import Text.Fractions
|
|
import Text.Trifecta
|
|
import Text.Parser.Combinators
|
|
|
|
unitOfSuccess :: (TokenParsing m, Monad m) => m Integer
|
|
unitOfSuccess = do
|
|
number <- integer
|
|
_ <- eof
|
|
return number
|
|
|
|
type FractionOrNumber = Either Rational Integer
|
|
|
|
parseFractionOrNumber :: Parser FractionOrNumber
|
|
parseFractionOrNumber = skipMany (oneOf "\n")
|
|
>> (Left <$> try virtuousFraction)
|
|
<|> (Right <$> integer)
|
|
|
|
main :: IO ()
|
|
main = do
|
|
print $ parseString unitOfSuccess mempty "123"
|