Bonjour tout le monde,
Je suis en train de suivre cette série d'articles sur la théorie des catégories appliquée à Haskell et C++. Je n'ai jamais fait ça en cours (normal, je sors tout juste de prépa …) et c'est clairement vulgarisé, donc je n'ai pas le bagage formel qu'il faut. Voici l'article qui me pose problème. J'ai bien compris le principe de la catégorie de Kleisli associée à la monade Writer
. Pour reprendre l'explication de l'article:
For our limited purposes, a Kleisli category has, as objects, the types of the underlying programming language. Morphisms from type A to type B are functions that go from A to a type derived from B using the particular embellishment.
Ça, j'ai bien compris. Par contre, ce qui me perturbe, c'est que le morphisme de A
vers B
aille vers autre chose que B
. En effet, selon Wikipédia:
There are many equivalent definitions of a category.[2] One commonly used definition is as follows. A category C consists of
- a class ob(C) of objects
- a class hom(C) of morphisms, or arrows, or maps, between the objects. Each morphism f has a source object a and a target object b where a and b are in ob(C). We write f: a → b, and we say "f is a morphism from a to b". We write hom(a, b) (or homC(a, b) when there may be confusion about to which category hom(a, b) refers) to denote the hom-class of all morphisms from a to b. (Some authors write Mor(a, b) or simply C(a, b) instead.)
Si je m'appuie sur la définition d'une catégorie de Kleisli donnée par nLab:
The Kleisli category $C_T$ has as objects the objects of $C$, and as morphisms $M \to N$ the elements of the hom-set $C(M,T(N))$, in other words morphisms of the form $M \to T(N)$ in $C$, called Kleisli morphisms.
Je ne comprends pas pourquoi c'est permis que les morphismes soient de la forme $M \to T(N)$ au lieu de $M \to N$.
Pourriez-vous m'éclairer ? (Attention hein, je ne connais que ce que j'ai vu dans les articles de la série avant celui que j'ai posté, je n'ai aucune base formelle sur ce bazar).