
Le 18 mai 2014 15:27, Arnaud Bailly
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
wrote: Le 18 mai 2014 14:36, Simon Marechal
a écrit : On 05/18/2014 12:04 PM, Gautier DI FOLCO wrote:
Merci par avance pour vos réponses et votre patience.
A mon avis, le plus efficace pour vraiment comprendre ce qu'il se passe, 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 :
ç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.