В Haskell мы используем термин «раздел» для обозначения частично применяемой функции, используемой в инфиксной позиции. Например, для функции 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
части f
определяется как правая обратная часть f
(так что f . g == id
).
Я не вижу очевидной связи между двумя определениями. Например, s1
явно не является инверсией foo
, по крайней мере, не в Hask. Я полагаю, что s1
даже не нужно иметь инверсию в Hask.
Является ли теоретико-категориальное определение источником определения Haskell, и если да, то как?
(x+y)
, отрубаешь от него одну часть (берешь сечение) и считаешь, что осталось. - person chi   schedule 10.11.2016