Вы можете использовать sequence
, специализированный для монады (->) a
. Таким образом, вы можете избежать определения пользовательской функции для задания - она уже есть.
> :t sequence
sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
> :t sequence :: [a->b] -> a -> [b]
sequence :: [a->b] -> a -> [b] :: [a -> b] -> a -> [b]
> sequence [id,(10+),(10-)] 3
[3,13,7]
(sequenceA
и traverse id
, будучи одинаковыми, также будут работать)