evalString :: Session a => a -> String -> IO [EXPRESSION]
evalString sess s = do
  putStrLn $ "Send CAS cmd " ++ s
  hPutStrLn (inp sess) s
  res <- getNextResultOutput (outp sess)
  putStrLn $ "Result is " ++ res
  putStrLn $ "Parsing of --" ++ skipReduceLineNr res ++ "-- yields "
    ++ show (redOutputToExpression res)
  return $ maybeToList $ redOutputToExpression res

-- | wrap evalString into a ProofStatus
evalString :: Session a => a -> String -> IO [EXPRESSION]
evalString sess s = do
  putStrLn $ "Send CAS cmd " ++ s
  hPutStrLn (inp sess) s
  res <- getNextResultOutput (outp sess)
  putStrLn $ "Result is " ++ res
  putStrLn $ "Parsing of --" ++ skipReduceLineNr res ++ "-- yields "
    ++ show (redOutputToExpression res)
  return $ maybeToList $ redOutputToExpression res

-- | wrap evalString into a ProofStatus
evalString sess s = do
  putStrLn $ "Send CAS cmd " ++ s
  hPutStrLn (inp sess) s
  res <- getNextResultOutput (outp sess)
  putStrLn $ "Result is " ++ res
  putStrLn $ "Parsing of --" ++ skipReduceLineNr res ++ "-- yields "
    ++ show (redOutputToExpression res)
  return $ maybeToList $ redOutputToExpression res

-- | wrap evalString into a ProofStatus