Das Naturgesetz besagt:
t . traverse f == traverse (t . f) -- for every applicative transformer t
Wenn nun für die RHS des Gesetzes f den Typ hat Applicative a => x -> a y
, muss t (Applicative a, Applicative b) => a y -> b y
aufgrund der Funktionszusammensetzung vom Typ sein .
Für die LHS hat die Traverse f den Typ (Applicative a, Traversable c) => c x -> a (c y)
. Da aber die Traverse f mit t zusammengesetzt ist. Traverse f, t muss vom Typ (cx -> a (cy)) -> b y sein.
Nun hat t für die LHS den Typ a (cy) -> by, aber von der RHS hat es den Typ ay -> b y. Wie klingt das Gesetz aus einer Typperspektive?
Bearbeiten: Der Typ t in LHS wurde korrigiert