[Haskell-fr] Fw: Éclaircissement sur les Applicatives

Gautier DI FOLCO gautier.difolco at gmail.com
Mon Jan 6 22:05:02 UTC 2014


Le 6 janvier 2014 15:06, Dan Popa <popavdan at yahoo.com> a écrit :

> Bon jour,
>
>
> Le typeclass Applicative à la tête suivante :
> class Functor f => Applicative f where
>   pure :: a -> f a
>   (<*>) :: f (a -> b) -> f a -> f b
>   (*>) :: f a -> f b -> f b
>   (<*) :: f a -> f b -> f a
>
> A1 : Ce qui signifie que tout type implémentant ces fonctions doivent
> également implémenter les fonctions de Functor.
> Q1 : quelle est l'intérêt ?
>
> Rep1. Plus! Le matematicien doit montre que une instance de cette classe
> est un Functor, et apres ca,
>  il peut utiliser cette instance de la classe, sans probleme. Quand on
> ecrit quelque chose comme
> CommutativeRing x =>  l'auteur du logiciel doit etre confient que
> l-operation a la proprietait d'etre commutatif et
> toute les autre.
>
> Rep1. More!The matematician should prove that a specific instance of a
> class is actually a functor, and, after it,
> he can use this instance, without problems. So, when is written something
> like CommutativeRing x =>
> the programer may base on the asumption that the operation is commutative
> etc.
>
>
>
> Q4 : quel est l'intérêt ? liftA (+1) $ Just 1 n'est pas égale à pure (+1)
> <*> Just 1 ?
>
>
> ------------------------------------------------------------------------------------------------------------------------
> 4.Numero:   1,             +
> Maybe Numero: Just 1,    donc qui ?
> Rep4: La premiere expression signifier: (liftA (+1)) $ (Just 1). La cause
> est l'associativite a la gauche de l'aplication
> de fonction. Une autre cause: la petite priorite de l'operateur $. Donc il
> est la derniere operation.
> Rep4: The previous expression means: (liftA (+1)) $ (Just 1). The cause it
> the right associativity of the functional
>  application. Also, the small priority of the "$" operator. It becomes the
> last one, here.
>
> ------------------------------------------------------------------------------------------------------------------------
>
> Q6 : dans le cas de version Functor, quel est l'intérêt de la passer
> Applicative ?
> liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
>
> Rep6: Ca signifier que f este quelque chose qui peut etre aplique a a b et
> c. Une abstraction, une fonction, c'est ca.
> Rep6: This means that f is something that can be aplied to a b and c and
> all. It's an abstraction (anonymous function) or a function.
>
> ---------------------------------------------------------------------------------------------------------------------------
> Quand on transfere une calcul dans la Monade Maybe on doit transfere les
> valeurs, donc 1 deviene Just 1,
> les operations (n'emporte pas quelques arguments) - donc on va avait
> plusieurs variants de lifting -
> et aussi la non valeur qui devien Nothing.
> Donc: (Just 1) `(lifting2 (+)) (Just 2) = (Just 3)  et  biensure, 3=1+2.
> Nais: (Just 1) `(lifting2 (/)) (Just 0) = Nothing
>
> Dans cette maniere on peu utiliser les non valeurs. "Nothing" est une
> erreur qui a ete ajouter a la structure algebrieque quie nous enteresee.
>
> Escuse-moi pour ma langue. Je ne suit pas natif. Et le clavier, ici, est
> "anglophone".
>
> Enjoy !
> Dan
>

Merci beaucoup pour ces précisions.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-fr/attachments/20140106/5bb84567/attachment.html>


More information about the Haskell-fr mailing list