После прочтения некоторых очень простых 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
, которая может это сделать?