В Haskell мы используем термин "раздел", чтобы указать частично примененную функцию, используемую в позиции infix. Например, для функции foo :: a -> b -> c
и значений x :: a
и y :: b
мы имеем две секции
s1 = (x `foo`) :: b -> c == \b -> foo x b
и
s2 = (`foo` y) :: a -> c == \a -> foo a y
В теории категорий, однако, раздел g
of f
определяется как правый обратный к f
(так что f . g == id
).
Я не вижу очевидной связи между этими двумя определениями. Например, s1
явно не является обратным к foo
, по крайней мере, не в Hask. Я полагаю, что s1
даже не должен иметь инверсию в Hask.
Является ли категориальное определение источником определения Haskell, и если да, то как?