Je suis à la recherche de la façon idiomatique de le faire. Cela fonctionne, mais il semble que je doive réinventer quelque chose dans la bibliothèque standard. Quelle est la bonne façon de faire cela? J'essaie de transmettre une liste de fonctions et de les lier en séquence. Exemple de Toy:Novice haskell - liaison séquentielle monad
bindSeq :: (Monad m) => m a -> [(a -> m a)] -> m a
bindSeq m [] = m
bindSeq m (x:xs) = bindSeq (m >>= x) xs
bindSeq (Just 4) [ Just . (+1), Just . (+2)]
Just 7
Qu'en est-il de 'bindSeq = foldl '(>> =)'? – Fixnum
Oui, c'est ce que je cherchais, merci –
Voir [concatM] (http://hackage.haskell.org/packages/archive/monad-loops/latest/doc/html/Control-Monad-Loops.html #v: concatM) dans le paquet ** monad-loops **. En outre, vous pouvez définir une instance Monoid, comme [this] (https://gist.github.com/hiratara/4038651). Peut-être existe-t-il un standard déjà défini, mais je ne le trouve pas. – danidiaz