Le 18 mai 2014 15:27, Arnaud Bailly <arnaud.oqube@gmail.com> a écrit :
Je plussoie sur le cours NICTA que j’ai découvert récemment.Tony Morris est un génie, dommage que ce soit aussi un connard.On 18 May 2014, at 15:20, Gautier DI FOLCO <gautier.difolco@gmail.com> wrote:Le 18 mai 2014 14:36, Simon Marechal <simon@banquise.net> a écrit :
On 05/18/2014 12:04 PM, Gautier DI FOLCO wrote:A mon avis, le plus efficace pour vraiment comprendre ce qu'il se passe,
> Merci par avance pour vos réponses et votre patience.
c'est de désucrer le code à la main. Pour moi le truc qui m'a vraiment
permis d'avancer ça a été d'écrire "State" et "Maybe" moi même, juste en
suivant les types, puis de faire "StateT" et "MaybeT".
Il y a ce "cours", qui est en fait une succession d'exercices, qui je
pense est excellent :
https://github.com/NICTA/courseça a l'air génial ce dépôt, merci._______________________________________________
Haskell-fr mailing list
Haskell-fr@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-fr
_______________________________________________
Haskell-fr mailing list
Haskell-fr@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-fr
Je suis de retour...Je suis sur le cours de NICTA et je suis sur la définition de l'instance Apply de State.
Voilà à quoi j'arrive :
State f <*> State g = State $ \x -> let (a, b) = g x in let (c, d) = f b in (c a, d)Ce qui n'est pas très éloigné de la solution (https://github.com/tonymorris/course/blob/master/src/Course/State.hs#L45) :
instance Apply (State s) where
State f <*> State a =
State (\s -> let (g, t) = f s
(z, u) = a t
in (g z, u))
Si je les met côte à côte :
State f <*> State g = State $ \x -> let (a, b) = g x in let (c, d) = f b in (c a, d)
State f <*> State g = State $ \x -> let (c, d) = f x in let (a, b) = g d in (c a, b)Et là, je suis troublé...J'inverse l'évaluation de f et de g et ça continue de fonctionner (selon les tests et 2-3 cas fait à la main).J'ai trois questions :
1. Est-ce que j'ai bon ?2. Si oui, pourquoi en général on fait plus comme la solution ?3. Si oui (1), pourquoi est-ce que les deux sont équivalents ?
Merci par avance.
_______________________________________________
Haskell-fr mailing list
Haskell-fr@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-fr