Différence entre la Monade et Applicative en Haskell

Je viens de lire la suite de typeclassopedia à propos de la différence entre Monad et Applicative. Je peux comprendre qu'il n'est pas join dans Applicative. Mais la description suivante semble vague pour moi et je ne pouvais pas comprendre ce que signifie exactement "le résultat" d'un monadique de calcul/de l'action. Donc, si je mets une valeur dans Maybe, ce qui rend une monade, quel est le résultat de ce "calcul"?

Regardons de plus près le type de (>>=). L'intuition est
qu'il combine les deux calculs en un seul calcul. L'
premier argument, m, est le premier calcul. Cependant, il serait
ennuyeux si le deuxième argument était juste une m b, alors il n'y aurait pas
moyen pour les calculs d'interagir les uns avec les autres (en fait, ce
est exactement la situation avec Applicative). Ainsi, le deuxième argument de
(>>=) a type a -> m, b: une fonction de ce type, compte tenu d'un résultat de
le premier calcul, peut produire un second calcul à exécuter.
... De manière intuitive, c'est cette capacité à utiliser la sortie de la précédente
les calculs de décider quels calculs à la prochaine exécution qui rend la Monade
plus puissant que Applicative. La structure d'un Applicatif
le calcul est fixe, alors que la structure d'une Monade calcul peut
changement basé sur les résultats intermédiaires.

Est-il un exemple concret pour illustrer "la capacité d'utiliser la sortie à partir des calculs précédents pour décider quels calculs à la prochaine exécution", qui Applicatifs n'ont pas?

InformationsquelleAutor tinlyx | 2014-04-28