expression :: Parser Expression
expression = foldl1 (<|>) (fmap try expressionList)
  where
    expressionList =
      [ constExpr
      , binOpExpr
      , unaryOpExpr
      , ifExpr
      , varExpr
      , letExpr
      , procExpr
      , callExpr
      , letRecExpr
      , tryExpr
      , raiseExpr
      ]
expression :: Parser Expression
expression = foldl1 (<|>) (fmap try expressionList)
  where
    expressionList =
      [ constExpr
      , binOpExpr
      , unaryOpExpr
      , ifExpr
      , varExpr
      , letExpr
      , procExpr
      , callExpr
      , letRecExpr
      , tryExpr
      , raiseExpr
      ]
expression = foldl1 (<|>) (fmap try expressionList)
  where
    expressionList =
      [ constExpr
      , binOpExpr
      , unaryOpExpr
      , ifExpr
      , varExpr
      , letExpr
      , procExpr
      , callExpr
      , letRecExpr
      , tryExpr
      , raiseExpr
      ]