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:
> 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 :

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.