Funtor

Un funtor \(F\) es una transformación para tipos y funciones. Por ejemplo si tenemos una función \(f: A \rightarrow B\) entonces \(F.f:F.A\rightarrow F.B\). Podemos dibujar un cuadrado representando esta equivalencia.7

1
2
3
4
5
A ───────── F.A
│            │
│ f          │ F.f
│            │
B ───────── F.B

Cada una de las transformaciones que puede realizar \(F\) se denomina \(F\)-co-álgebra, ej. \(\psi: X \rightarrow F.X\). Las transformaciones contrarias se denominan \(F\)-álgebra, ej. \(\rho: F.X \rightarrow X\).
La transformación que aplica un funtor a tipos y funciones está directamente relacionada, solo aplica \(f\) donde aparezca \(X\) en su transformación de tipo. Así por ejemplo en listas \(F.X = 1+A\times X\) y \(F.f = id + id \times f\).