Kurzer Weg zu schreiben (\ (x, y) - (f x, g y))

7

Für die Funktionen f :: a → b , g :: c → d , wie schreibe ich das Lambda

%Vor%

prägnanter? Ich habe versucht, (f, g) , aber - wie zu erwarten war, denke ich - ohne Erfolg.

    
fabian789 09.08.2016, 11:46
quelle

3 Antworten

16

Die Bifunctor -Instanz von (,) ist das, wonach Sie suchen:

%Vor%

bimap wendet zwei Funktionen auf ein Tupel an, eins auf jedes Element.

%Vor%

Sie fragen sich vielleicht, was der Unterschied zwischen bimap und (***) ist.

%Vor%

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

wird %Vor%

Mit (***) können Sie den Typ auf Funktionen und nicht auf einen beliebigen Pfeil a beschränken, sodass mit a ~ (->) der Typ von (***) zu

wird %Vor%

Ein genauer Blick zeigt, dass die beiden eingeschränkten Typen äquivalent sind.

    
chepner 09.08.2016, 12:39
quelle
9

Sie können (***) von Control.Arrow i.d.

verwenden %Vor%     
Lee 09.08.2016 11:51
quelle
7

Versuchen Sie

%Vor%

z.B.

%Vor%     
Steven Shaw 09.08.2016 11:56
quelle

Tags und Links