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

-- |Load a libary file
readExpr :: String -> EvalM Expr
readExpr expr = do
  isSExpr <- asks optSExpr
  if isSExpr
     then either (throwError . Parser) return (SExpr.parseExpr expr)
     else do r <- lift . lift $ NonS.parseExpr expr
             either (throwError . Parser) return r

-- |Load a libary file
readExpr expr = do
  isSExpr <- asks optSExpr
  if isSExpr
     then either (throwError . Parser) return (SExpr.parseExpr expr)
     else do r <- lift . lift $ NonS.parseExpr expr
             either (throwError . Parser) return r

-- |Load a libary file