La ley de naturalidad establece que:
t . traverse f == traverse (t . f) -- for every applicative transformer t
Ahora para el RHS de la ley, si f tiene el tipo Applicative a => x -> a y
, entonces t tiene que ser del tipo (Applicative a, Applicative b) => a y -> b y
, debido a la composición de la función.
Para el LHS, el recorrido f tiene el tipo (Applicative a, Traversable c) => c x -> a (c y)
. Pero dado que f transversal está compuesto por t. transversal f, t tiene que ser del tipo (cx -> a (cy)) -> b y.
Ahora, para el LHS, t tiene el tipo a (cy) -> by, pero desde el RHS tiene el tipo ay -> b y. ¿Cómo suena la ley desde una perspectiva tipo?
Editar: se corrigió el tipo t en LHS