import Picosat
import Control.Applicative
main :: IO ()
main = do
dimacsList1 <- (read <$> getLine) :: IO [[Integer]]
dimacsList2 <- (read <$> getLine) :: IO [[Integer]]
res1 <- solve dimacsList1
res2 <- solve dimacsList2
putStrLn $ (show res1) ++ " " ++ (show res2)
Вопрос. Как изменить приведенный выше пример, чтобы два спутниковых вызова выполнялись параллельно, т. е. с использованием параллелизма? Меня интересует производительность, если есть разные варианты.
(Просто для проверки: насколько я понимаю, монада ST ортогональна и не может использоваться в сочетании с параллелизацией/параллелизмом. Монада ST вначале меня немного смутила, это одна из причин, по которой я задаю вопрос.)
ST
этоIO
с допустимыми эффектами, ограниченными мутацией переменных, созданных в рамках этогоST
сеанса. Если есть какой-либо эффект, отличный от мутации, например параллелизм, это не то место, где можно использоватьST
. - person Carl   schedule 25.05.2014