Welche Art von Mathematik ist das: a - b - c

7

Ich sehe oft ähnliche Typ-Deklarationen, wenn ich Haskell betrachte:

%Vor%

Ich verstehe, dass es eine Funktion beschreibt, die etwas vom Typ a aufnimmt und eine neue Funktion zurückgibt, die etwas vom Typ b aufnimmt und etwas vom Typ c zurückgibt. Ich verstehe auch, dass Typen assoziativ sind (edit: Ich habe mich geirrt - siehe die Kommentare unten), also könnte das obige wie folgt umgeschrieben werden, um das gleiche Ergebnis zu erhalten:

%Vor%

Dies würde eine Funktion beschreiben, die etwas vom Typ a und etwas vom Typ b aufnimmt und etwas vom Typ c zurückgibt.

Ich habe auch gehört, dass du eine Ergänzung (edit: wirklich, das Wort, nach dem ich gesucht habe, ist dual - siehe die Kommentare unten) zu der Funktion machen kannst, indem du die Pfeile wechselst:

%Vor%

was meiner Meinung nach äquivalent zu

ist %Vor%

aber ich bin mir nicht sicher.

Meine Frage ist, wie heißt diese Art von Mathe? Ich würde gerne mehr darüber erfahren, damit ich damit bessere Programme schreiben kann. Ich bin daran interessiert, Dinge zu lernen, wie eine komplementäre Funktion ist und welche anderen Transformationen bei Typdeklarationen durchgeführt werden können.

Danke!

    
bmaddy 27.03.2011, 14:22
quelle

4 Antworten

5

Im Großen und Ganzen fällt dies in den Bereich Lambda-Kalkül .

Da diese Notation mit Arten von Funktionen zu tun hat Typ-Inferenz könnte Sie auch interessieren.

(Die falschen Annahmen, die Sie bezüglich der Assoziativität getroffen haben, sollten bereits ausreichend durch die anderen Antworten geklärt sein, so dass ich das nicht wiederholen werde)

    
H.B. 27.03.2011, 14:27
quelle
10

Typdeklarationen sind nicht assoziativ, a -> (b -> c) entspricht nicht (a -> b) -> c . Außerdem können Sie die Pfeile nicht "umschalten", a <- b <- c ist keine gültige Syntax.

Der übliche Hinweis auf Assoziativität ist in diesem Fall -> it rechts assoziativ , was bedeutet, dass a -> b -> c als a -> (b -> c) interpretiert wird.

    
sth 27.03.2011 14:34
quelle
4
%Vor%

und

%Vor%

sind nicht in Haskell gleichwertig. Das ist eine Typtheorie, die in der Kategorientheorie begründet werden kann.

Ersteres ist eine Funktion, die ein Argument vom Typ a verwendet und eine Funktion vom Typ b -> c zurückgibt. Letzteres ist eine Funktion, die eine Funktion vom Typ a -> b als Argument verwendet und einen Wert vom Typ c zurückgibt.

Was meinst du mit der Ergänzung einer Funktion? Der Typ der Umkehrfunktion einer Funktion vom Typ a -> (b -> c) hat den Typ (b -> c) -> a .

    
jmg 27.03.2011 14:30
quelle
2

Funktionen vom Typ a->b->c , die eigentlich Ketten von Funktionen sind, wie Sie sagten, sind Beispiele für Currying

    
Zach L 27.03.2011 14:29
quelle

Tags und Links