Frage Woher kommt der Name "Abschnitt" für einen partiell angelegten Infix-Operator?


In Haskell verwenden wir den Begriff "Abschnitt", um eine teilweise angewandte Funktion anzugeben, die in der Infixposition verwendet wird. Zum Beispiel für eine Funktion foo :: a -> b -> c und Werte x :: a und y :: bWir haben die zwei Abschnitte

s1 = (x `foo`) :: b -> c == \b -> foo x b

und

s2 = (`foo` y) :: a -> c == \a -> foo a y

In der Kategorientheorie jedoch ein Abschnitt g von f ist als eine rechte Umkehrung von definiert f (damit f . g == id).

Ich sehe keinen offensichtlichen Zusammenhang zwischen den beiden Definitionen. Zum Beispiel, s1 ist eindeutig keine Umkehrung von foozumindest nicht Hask. Ich nehme an s1 Muss nicht einmal haben eine Umkehrung in Hask.

Ist die kategorientheoretische Definition die Quelle der Haskell-Definition, und wenn ja, wie?


12
2017-11-10 20:37


Ursprung


Antworten:


Wie in den Kommentaren erwähnt wurde, bekam Haskell die Abschnitte von Miranda (und Orwell). David Turner sagt, er habe die Idee von Richard Bird und David Wile bekommen.

Ich habe gerade mit Richard Bird gesprochen. Er sagt, er erinnert sich nicht, woher der Name kam, aber er glaubt, dass es David Wile war, der ihn geprägt hat. Leider ist David Wile letztes Jahr gestorben, also werden wir es wahrscheinlich nie erfahren. Aber, Richard gab zu, dass er David Turner und Phil Wadler überzeugt hatte, Abschnitte in ihren Sprachen hinzuzufügen.

Hier ist die Seite von Wile's These, die die erste Erwähnung von "section" ist. http://imgur.com/a/cQDlu


20
2017-11-10 23:11



Möglicherweise kommt es von "Array-Abschnitt" Operation, in erster Linie in Fortran, insbesondere für die Spalten- oder Zeilenextraktion verwendet. Das macht Sinn, wenn Sie die Nachschlagetabelle aus einer Zwei-Argument-Funktion erstellen. https://www.phy.ornl.gov/csep/pl/node16.html


2
2017-11-11 11:51