In Haskell verwenden wir den Begriff "Abschnitt", um eine teilweise angewendete Funktion anzugeben, die in der Infixposition verwendet wird. Zum Beispiel für eine Funktion foo :: a -> b -> c
und Werte x :: a
und y :: b
, haben wir die beiden AbschnitteWoher kommt der Name "Abschnitt" für einen partiell angelegten Infix-Operator?
s1 = (x `foo`) :: b -> c == \b -> foo x b
und
s2 = (`foo` y) :: a -> c == \a -> foo a y
In der Kategorie Theorie jedoch ein Abschnitt g
von f
als rechtem inversen definiert ist von f
(so dass f . g == id
).
Ich sehe keine offensichtliche Verbindung zwischen den beiden Definitionen. Zum Beispiel ist s1
eindeutig keine Umkehrung von foo
, zumindest nicht in Hask. Ich nehme an, s1
muss nicht einmal haben eine inverse in Hask.
Ist die kategorientheoretische Definition die Quelle der Haskell-Definition, und wenn ja, wie?
Meine Vermutung ist, dass die beiden völlig unabhängig sind. Ich interpretiere "Abschnitt" als: Sie nehmen '(x + y)', hacken einen Teil davon ab (nehmen Sie einen "Abschnitt"), und überlegen Sie, was bleibt. – chi
Das ist aber ... prosaisch. – chepner
Ich weiß es nicht, aber ich werde versuchen, es herauszufinden. – augustss