Скажем, я хочу применить простую функцию (\x -> x+1)
ко всем элементам в списке [1,2,3]
.
Я делаю map (\x -> x+1) [1,2,3]
и получаю как ожидалось [2,3,4]
. Тип возвращаемого значения - Num a => [a]
.
. Что теперь произойдет, если моя функция возвращает тип Monad и определена как \x -> do return x+1
? Я хочу как-то применить эту функцию ко всем элементам в списке и получить обратно тип (Monad m, Num a) => m [a]
.
И значение будет таким же [2,3,4]
, только завернутым в монаду.
Я боролся с этим некоторое время без особого прогресса. Любая идея, как я могу сопоставить эту функцию с моим списком?