在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
範疇論,然而,部分的f
g
被定義爲右逆的f
(所以f . g == id
)。
我沒有看到兩個定義之間的明顯聯繫。例如,s1
顯然不是foo
的倒數,至少不是哈希。我想s1
甚至沒有有倒數哈斯。
類別理論定義是Haskell定義的來源,如果是這樣,如何?
我的猜測是兩者完全無關。我把「部分」解釋爲:你拿'(x + y)',砍掉它的一部分(拿一個「部分」),並考慮剩下的部分。 – chi
雖然這很平淡無奇。 – chepner
我不知道,但我會盡力找出答案。 – augustss