J'apprends la programmation fonctionnelle en utilisant le langage Scala. J'ai lu le tutoriel sur le foncteur que le foncteur a 2 lois:Scala: exemple de compteur de loi de composition
1. identity law: functor.map(x => x) ≡ functor
2. Composition law: functor.map(x => f(g(x))) ≡ functor.map(g).map(f)
La chose que je ne connais pas la loi de composition. J'ai le sentiment que toute fonction a cette propriété: f (g (x)) = functor.map (g) .map (f). Pouvons-nous avoir un exemple qui n'obéisse pas à cette règle?
Merci
Ce que vous appelez « loi de composition "s'appelle en fait" Associativity Law ": https://en.wikipedia.org/wiki/Functor#Definition. Il y a beaucoup d'instances de foncteurs, mais une seule qui satisfait ce 'f (g (x)) = functor.map (g) .map (f)' donc ce n'est pas une propriété inhérente aux foncteurs. – pedrofurla
Je crois que "la loi de composition" est correcte. Cela semble cohérent avec l'article Wikipédia que vous avez lié. –
@pedrofurla [Lois de l'associativité] (https://en.wikipedia.org/wiki/Associative_property#Definition) impliquent trois éléments et prennent généralement la forme 'x <> (y <> z) = (x <> y) < > z' (où l'opération associative est appelée '<>' ici). Ou, en évitant l'infixe, ce serait 'h (x, h (y, z)) = h (h (x, y), z)'. La loi de composition des foncteurs signifie qu'un foncteur est une sorte d '[homomorphisme] (https://en.wikipedia.org/wiki/Homomorphism#Definition) (entre catégories). Je crois que "loi de composition" est un terme assez raisonnable (puisque l'homomorphisme est sur l'opération de composition). –