EN
PréludeChargé par défaut — aucun import nécessaire.

Monad — séquencer des calculs qui dépendent des résultats précédents

Synopsis
interface Applicative f => Monad f where
(>>=) : f a -> (a -> f b) -> f b
(>>) : f a -> Lazy (f b) -> f b

Un Applicative dont les effets peuvent dépendre de valeurs calculées auparavant. (>>=) (« bind ») exécute un calcul, puis passe son résultat à une fonction qui produit le calcul suivant. (>>) enchaîne deux calculs en ignorant le résultat du premier ; il a une définition par défaut via (>>=).

C'est ce vers quoi le bloc do se désucre : do { x <- m; rest } ==> m >>= \x -> do { rest } do { m; rest } ==> m >> do { rest } Le second argument de (>>) est Lazy (comme en Idris 2) : le premier peut arrêter l'enchaînement (Nothing, Left), et une définition peut s'y citer.