module Calculator.Prim.Base where -------------------------------------------------------------------------------- import Text.ParserCombinators.Parsec -------------------------------------------------------------------------------- import Control.Applicative ((<$>)) import Control.Monad (liftM2) -------------------------------------------------------------------------------- type Number = Double -------------------------------------------------------------------------------- parseNumber :: Parser Number parseNumber = read <$> do dec <- many1 digit flt <- option "" (liftM2 (:) (char '.') (many1 digit)) if null flt then return dec else return $ dec ++ flt -------------------------------------------------------------------------------- parseId :: Parser String parseId = (liftM2 (:) letter (many (letter <|> digit))) --------------------------------------------------------------------------------