Parsec.Combinator:option
まんま
module Main where import Char import Text.ParserCombinators.Parsec priority :: Parser Int priority = option 0 (do{ d <- digit ; return (digitToInt d) }) run :: Show a => Parser a -> String -> IO () run p input = case (parse p "" input) of Left err -> do{ putStr "parse error at " ; print err } Right x -> print x
で、
*Main> run priority "10" 1 *Main> run priority "9" 9 *Main> run priority "a" 0