function :: Parser Expr
function = indentBlock $ do
rword "let"
name <- word
args <- many word
char '='
return (L.IndentMany Nothing (return . Function name args ) expr')
expr' :: Parser Expr
expr' = try function <|> ...
Вопрос: как сделать так, чтобы в любой функции можно было бы объявить функцию, но в случае ошибки парсер бы не уходил в бесконечную рекурсию?