Вопрос прозвучит как что-то не совсем конкретное,но есть ли способы в Haskell каким-то образом использовать две монады параллельно?
Что-то вроде такого:
pbind :: (m a,g b) -> (a -> b -> (m c,g d)) -> (m c,g d).
Есть вариант сделать m,g трансформерами с IO,и передавать a,b в IO,сначала сохранив их в IORef,а потом считывая их из переменных.
Но это такое себе,но даже если отбросить как таковую чистоту,то все равно это не очень хорошее решение ,как мне кажется будет по скорости,и хотелось бы вариант побыстрее.