Die Bifunctor
-Instanz von (,)
ist das, wonach Sie suchen:
bimap
wendet zwei Funktionen auf ein Tupel an, eins auf jedes Element.
Sie fragen sich vielleicht, was der Unterschied zwischen bimap
und (***)
ist.
Mit bimap
können Sie den Typ auf Tupel und nicht auf einen beliebigen Bifunctor p
beschränken, sodass mit p ~ (,)
der Typ von bimap
zu
Mit (***)
können Sie den Typ auf Funktionen und nicht auf einen beliebigen Pfeil a
beschränken, sodass mit a ~ (->)
der Typ von (***)
zu
Ein genauer Blick zeigt, dass die beiden eingeschränkten Typen äquivalent sind.