fr:
La monade List
en: The list monad
blogimage("golconde.jpg","Golconde de Magritte")
fr: La monade `List` nous aide à simuler des calculs non-déterministes.
en: The list monad helps us to simulate non-deterministic computations.
fr: C'est parti :
en: Here we go:
> import Control.Monad (guard)
>
> allCases = [1..10]
>
> resolve :: [(Int,Int,Int)]
> resolve = do
> x <- allCases
> y <- allCases
> z <- allCases
> guard $ 4*x + 2*y < z
> return (x,y,z)
>
> main = do
> print resolve
fr: Ma. GIQUE. :
en: MA. GIC. :
~~~
[(1,1,7),(1,1,8),(1,1,9),(1,1,10),(1,2,9),(1,2,10)]
~~~
fr: Pour la monade `List`, il y a aussi un sucre syntaxique :
en: For the list monad, there is also this syntactic sugar:
> print $ [ (x,y,z) | x <- allCases,
> y <- allCases,
> z <- allCases,
> 4*x + 2*y < z ]
fr: Je ne listerai pas toutes les monades, car il y en a beaucoup.
en: I won't list all the monads, since there are many of them.
fr: Utiliser les monades simplifie la manipulations de plusieurs notions dans les langages purs.
en: Using monads simplifies the manipulation of several notions in pure languages.
fr: Les monades sont très utiles, en particulier pour :
en: In particular, monads are very useful for:
fr: - L'E/S (IO),
en: - IO,
fr: - les calculs non-déterministes,
en: - non-deterministic computation,
fr: - générer des nombres pseudo-aléatoires,
en: - generating pseudo random numbers,
fr: - garder un état de configuration,
en: - keeping configuration state,
fr: - écrire un état,
en: - writing state,
- ...
fr: Si vous m'avez suivi jusqu'ici, alors vous avez terminé !
en: If you have followed me until here, then you've done it!
fr: Vous connaissez les monades[^03021301] !
en: You know monads[^03021301]!
fr: [^03021301]: Vous aurez quand même besoin de pratiquer un peu pour vous habituer à elles et pour comprendre quand les utiliser et créer les vôtres. Mais vous avez déjà fait un grand pas dans cette direction.
en: [^03021301]: Well, you'll certainly need to practice a bit to get used to them and to understand when you can use them and create your own. But you already made a big step in this direction.