handleStatements :: [Term] -> IO ()
handleStatements statements = do
let (queries, clauses) = partition isQuery statements
mapM_ (clausesEntailProof clauses) queries
--apply clauses to queries and ignore result
handleArgs :: String-> IO ()
handleArgs args = do
contents <- readFile $ args
case parseInput contents of
Left err -> print err
Right statements -> handleStatements statements
main :: IO ()
main = do
handleStatements(input)
where input = getLine >>= (\str -> ((readIO str)::IO[Term]))
Я получил ошибку. Не удалось сопоставить ожидаемый тип «[Term]» с фактическим типом «IO Term». Как я могу это исправить?
where
таким образом. - person Willem Van Onsem   schedule 14.10.2020>>=
в теле (как вinput >>= handleStatements
). - person Daniel Wagner   schedule 14.10.2020where
каким-то образом выполняетIO
, а затем устанавливает результат наinput
. Вы действительно можете использоватьinput >>= handleStatements
- person Willem Van Onsem   schedule 14.10.2020