module Test where import Monad zeroOrMore, oneOrMore :: MonadPlus m => m a -> m [a] zeroOrMore m = return [] `mplus` oneOrMore m oneOrMore m = do { a <- m; as <- zeroOrMore m; return (a:as) }