Bon jour,Rep1. Plus! Le matematicien doit montre que une instance de cette classe est un Functor, et apres ca,
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 ?
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.
------------------------------------------------------------------------------------------------------------------------Rep6: Ca signifier que f este quelque chose qui peut etre aplique a a b et c. Une abstraction, une fonction, c'est ca.
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: 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