mplus : Maybe a -> Maybe a -> Maybe a mplus a b = ?mplus_rhs factor : Maybe Int factor = ?term_rhs symbol : String -> Maybe Int symbol = ?symbol_rhs term : Maybe Int term = ?term_rhs term = do f <- factor do symbol "*" t <- term pure (f * t) `mplus` pure f