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