[Haskell-fr] Éclaircissements sur les monades

Alp Mestanogullari alpmestan at gmail.com
Wed Mar 26 16:55:35 UTC 2014


Le truc du contexte, je pense qu'ya une bonne image pour le représenter.

Ce qui est propre au monade et que n'ont pas les applicatives, c'est que la
suite d'une fonction dépende de ce qui se passe à un moment donné.
Exemple:

foo :: IO ()
foo = do
  s <- getLine
  case s of
      "hello" -> putStrLn " world!"
      _        -> foo

ici, on fait quelque chose dans IO, et selon le résultat, il peut se passer
deux choses complètement différentes. On se sert beucoup de ce genre de
"contexte" dans les parsers par exemple, c'est littéralement explicit, les
parsers ont une forte analogie avec la monade State.

Alors qu'avec Applicative, tu peux avoir des "effets", des computations
avec un petit truc en plus (parseurs qui retournent une valeur mais qui
entre temps ont consumé une partie de l'input pour produire ces valeurs),
etc, mais t'es obligé de garder la même "structure" pour ton code, ex:

data Person = Person { age :: Int, name :: String }

blah :: Parser Person
blah =   Parser
     <$> parseInt
     <*> parseString

T'auras beau faire ce que tu veux, taper dans tes mains, danser la salsa,
etc, tu pourras pas changer le comportement de ce parseur de "personnes"
selon la valeur de l'Int ou de la chaine de caractères.

Enfin, pour terminer, c'est cet article que j'ai trouvé le plus profond sur
les monades:
http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html

En espérant que ça t'aide à comprendre!


2014-03-26 17:47 GMT+01:00 Gautier DI FOLCO <gautier.difolco at gmail.com>:

> Le 26 mars 2014 17:31, Arnaud Bailly <arnaud.oqube at gmail.com> a écrit :
>
> Qu’est ce qui est un peu flou dans la notion de contexte ? A part le fait
>> que ce soit justement un mot flou… qui peut désigner n’importe quoi (une
>> liste, une valeur optionnelle, le monde).
>>
>
> Par exemple que représente le fait d'avoir comme contexte/cadre de calcul
> une liste ? que je ne peux utiliser que les fonctions propres aux listes ?
>
>
>> Sur le fait que les monade soient plus aptes à contenir les effets de
>> bord, il me semble que c’est parce que le concept d’effet de bord implique
>> la séquentialité, un avant et un après : l’ordre dans lequel les effets de
>> bord opèrent est important. Et c’est justement la propriété essentielle des
>> monades qui n’est pas celle des foncteurs applicatifs que de séquencer des
>> “opérations”.
>>
>> Je trouve l’article de Wikipedia très clair :
>> https://en.wikipedia.org/wiki/Monads_in_functional_programming
>>
>> Arnaud
>>
>
> Ma question est là, qu'est-ce qui défini cette notion de séquence ? en
> quoi les 4-5 fonctions du typeclass font qu'il y a une notion de séquence ?
>
> _______________________________________________
> Haskell-fr mailing list
> Haskell-fr at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-fr
>
>


-- 
Alp Mestanogullari
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-fr/attachments/20140326/c1c2f1c7/attachment.html>


More information about the Haskell-fr mailing list