join, dans le module Control.Monad, c’est le join classique de monades. Haskell a choisit d’utiliser bind et return, mais on pourrait utiliserjoin à la place. Dans tous les cas passer de l’un à l’autre est assez simple:
join::Monadm=>m(ma)->majoin=(>>=id)
Dans l’exemple que je donne plus haut, on tient compte du fait que (->) r soit une instance de Monad, pour laquelle join soit applicable, avec pour définition :
On a (*) : Num a => a -> a -> a, donc (*) est une instance de Monad pour Num a => (->) a. Puisque join = (>>= id), alors join (*) = id >>= (*) = \x -> (*) (id x) x = \x -> (*) x x = \x -> x * x, soit un fonction qui prend un nombre en argument et retourne sa valeur multipliée par elle-même.
[^] # Re: simple ?
Posté par neil . En réponse au journal Rust en version 0.12. Évalué à 4.
join, dans le module
Control.Monad, c’est le join classique de monades. Haskell a choisit d’utiliser bind et return, mais on pourrait utiliser join à la place. Dans tous les cas passer de l’un à l’autre est assez simple:Dans l’exemple que je donne plus haut, on tient compte du fait que
(->) rsoit une instance de Monad, pour laquellejoinsoit applicable, avec pour définition :On a
(*) : Num a => a -> a -> a, donc(*)est une instance deMonadpourNum a => (->) a. Puisquejoin = (>>= id), alorsjoin (*)=id >>= (*)=\x -> (*) (id x) x=\x -> (*) x x=\x -> x * x, soit un fonction qui prend un nombre en argument et retourne sa valeur multipliée par elle-même.