<div dir="ltr">As-tu testé avec des fonctions f et g qui ne commutent pas ?<div><br></div><div>- Valentin</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-24 11:03 GMT-07:00 Gautier DI FOLCO <span dir="ltr"><<a href="mailto:gautier.difolco@gmail.com" target="_blank">gautier.difolco@gmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Le 18 mai 2014 15:27, Arnaud Bailly <span dir="ltr"><<a href="mailto:arnaud.oqube@gmail.com" target="_blank">arnaud.oqube@gmail.com</a>></span> a écrit :<div>

<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div>Je plussoie sur le cours NICTA que j’ai découvert récemment.</div>


<div><br></div>Tony Morris est un génie, dommage que ce soit aussi un connard.<div><br><div><div><div><div>On 18 May 2014, at 15:20, Gautier DI FOLCO <<a href="mailto:gautier.difolco@gmail.com" target="_blank">gautier.difolco@gmail.com</a>> wrote:</div>


<br></div></div><blockquote type="cite"><div><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Le 18 mai 2014 14:36, Simon Marechal <span dir="ltr"><<a href="mailto:simon@banquise.net" target="_blank">simon@banquise.net</a>></span> a écrit :<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>On 05/18/2014 12:04 PM, Gautier DI FOLCO wrote:<br>
> Merci par avance pour vos réponses et votre patience.<br>
<br>
</div>A mon avis, le plus efficace pour vraiment comprendre ce qu'il se passe,<br>
c'est de désucrer le code à la main. Pour moi le truc qui m'a vraiment<br>
permis d'avancer ça a été d'écrire "State" et "Maybe" moi même, juste en<br>
suivant les types, puis de faire "StateT" et "MaybeT".<br>
<br>
Il y a ce "cours", qui est en fait une succession d'exercices, qui je<br>
pense est excellent :<br>
<br>
<a href="https://github.com/NICTA/course" target="_blank">https://github.com/NICTA/course</a><br></blockquote></div><br></div><div class="gmail_extra">ça a l'air génial ce dépôt, merci.<br></div></div></div></div><div>



_______________________________________________<br>Haskell-fr mailing list<br><a href="mailto:Haskell-fr@haskell.org" target="_blank">Haskell-fr@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-fr" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-fr</a><br>


</div></blockquote></div><br></div></div><br>_______________________________________________<br>
Haskell-fr mailing list<br>
<a href="mailto:Haskell-fr@haskell.org" target="_blank">Haskell-fr@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-fr" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-fr</a><br>
<br></blockquote></div></div></div><br></div><div class="gmail_extra">Je suis de retour...<br><br></div><div class="gmail_extra">Je suis sur le cours de NICTA et je suis sur la définition de l'instance Apply de State.<br>

</div><div class="gmail_extra">
Voilà à quoi j'arrive :<br>State f <*> State g = State $ \x -> let (a, b) = g x in let (c, d) = f b in (c a, d)<br><br></div><div class="gmail_extra">Ce qui n'est pas très éloigné de la solution (<a href="https://github.com/tonymorris/course/blob/master/src/Course/State.hs#L45" target="_blank">https://github.com/tonymorris/course/blob/master/src/Course/State.hs#L45</a>) :<br>


<br>instance Apply (State s) where<br>  State f <*> State a =<br>    State (\s -> let (g, t) = f s<br>                     (z, u) = a t<br>                 in (g z, u))<br></div><div class="gmail_extra"><br>Si je les met côte à côte :<br>


State f <*> State g = State $ \x -> let (a, b) = g x in let (c, d) = f b in (c a, d)<br>State f <*> State g = State $ \x -> let (c, d) = f x in let (a, b) = g d in (c a, b)<br><br></div><div class="gmail_extra">


Et là, je suis troublé...<br></div><div class="gmail_extra">J'inverse l'évaluation de f et de g et ça continue de fonctionner (selon les tests et 2-3 cas fait à la main).<br><br></div><div class="gmail_extra">J'ai trois questions :<br>


</div><div class="gmail_extra">1. Est-ce que j'ai bon ?<br></div><div class="gmail_extra">2. Si oui, pourquoi en général on fait plus comme la solution ?<br></div><div class="gmail_extra">3. Si oui (1), pourquoi est-ce que les deux sont équivalents ?<br>


<br></div><div class="gmail_extra">Merci par avance.<br></div></div>
<br>_______________________________________________<br>
Haskell-fr mailing list<br>
<a href="mailto:Haskell-fr@haskell.org">Haskell-fr@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-fr" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-fr</a><br>
<br></blockquote></div><br></div>