После прочтения некоторых очень простых haskell теперь я знаю, как "цепочки" монадических действий с помощью bind, например:
echo = getLine >>= putStrLn
Оператор (>>=) очень удобен таким образом, но что, если я хочу связать монадические действия (или функторы), которые принимают несколько аргументов?
Учитывая, что (>>=) :: m a -> (a -> m b) -> m b кажется, что (>>=) может предоставить только один аргумент.
Например, writeFile принимает два аргумента (a FilePath и содержимое). Предположим, что у меня есть монадическое действие, которое возвращает a FilePath, и другое действие, которое возвращает String для записи. Как я могу объединить их с writeFile, не используя do -notation, но в общем?
Есть ли какая-либо функция с типом: m a -> m b -> (a -> b -> m c) -> m c, которая может это сделать?