readExprs :: String -> EvalM [Expr]
readExprs expr = do
  isSExpr <- asks optSExpr
  if isSExpr
     then either (throwError . Parser) return (SExpr.parseExprs expr)
     else do r <- lift . lift $ NonS.parseExprs expr
             either (throwError . Parser) return r
readExprs :: String -> EvalM [Expr]
readExprs expr = do
  isSExpr <- asks optSExpr
  if isSExpr
     then either (throwError . Parser) return (SExpr.parseExprs expr)
     else do r <- lift . lift $ NonS.parseExprs expr
             either (throwError . Parser) return r
readExprs expr = do
  isSExpr <- asks optSExpr
  if isSExpr
     then either (throwError . Parser) return (SExpr.parseExprs expr)
     else do r <- lift . lift $ NonS.parseExprs expr
             either (throwError . Parser) return r