У меня есть монадическая функция getRate:
getRate :: String -> IO Double
Я хотел бы сопоставить эту функцию над списком String. Обычно я просто делал:
mapM getRate ["foo", "bar"]
но поскольку каждый вызов getRate делает сетевые вызовы, я хотел бы распараллелить карту, чтобы каждая скорость была выбрана в отдельном потоке (или, по крайней мере, распространена среди очередей). Я думаю о чем-то вроде
parMapM getRate ["foo", "bar"]
но функция parMapM отсутствует, а parMap не работает с монадическими функциями.
Что я могу сделать?