module Musicology.Pitch.Internal ( parseInt , parseInt' , munchChar , munchChar1 ) where import qualified Text.ParserCombinators.ReadP as R import Data.Char ( isDigit ) parseInt :: R.ReadP Int parseInt :: ReadP Int parseInt = do String sign <- forall a. a -> ReadP a -> ReadP a R.option String "" forall a b. (a -> b) -> a -> b $ String -> ReadP String R.string String "-" String dgts <- (Char -> Bool) -> ReadP String R.munch1 Char -> Bool isDigit forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ forall a. Read a => String -> a read forall a b. (a -> b) -> a -> b $ String sign forall a. Semigroup a => a -> a -> a <> String dgts parseInt' :: R.ReadP Int parseInt' :: ReadP Int parseInt' = forall a. Read a => String -> a read forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Char -> Bool) -> ReadP String R.munch Char -> Bool isDigit munchChar :: Char -> R.ReadP String munchChar :: Char -> ReadP String munchChar Char c = (Char -> Bool) -> ReadP String R.munch (forall a. Eq a => a -> a -> Bool == Char c) munchChar1 :: Char -> R.ReadP String munchChar1 :: Char -> ReadP String munchChar1 Char c = (Char -> Bool) -> ReadP String R.munch1 (forall a. Eq a => a -> a -> Bool == Char c)