Trong Haskell, chúng tôi sử dụng thuật ngữ "phần" để chỉ ra một hàm được áp dụng một phần được sử dụng ở vị trí trộn. Ví dụ, đối với một hàm foo :: a -> b -> c
và đánh giá cao x :: a
và y :: b
, chúng tôi có hai phầnTên "phần" đến từ đâu cho một toán tử infix được áp dụng một phần?
s1 = (x `foo`) :: b -> c == \b -> foo x b
và
s2 = (`foo` y) :: a -> c == \a -> foo a y
Về lý thuyết thể loại, tuy nhiên, một phần g
của f
được định nghĩa là một nghịch đảo ngay của f
(để f . g == id
).
Tôi không thấy kết nối rõ ràng giữa hai định nghĩa. Ví dụ: s1
rõ ràng không phải là nghịch đảo của foo
, ít nhất không phải trong Hask. Tôi giả sử s1
thậm chí không phải có một nghịch đảo trong Hask.
Định nghĩa lý thuyết danh mục là nguồn gốc của định nghĩa Haskell, và nếu có thì làm cách nào?
Tôi đoán là cả hai hoàn toàn không liên quan. Tôi giải thích "phần" là: bạn lấy '(x + y)', cắt một phần của nó (lấy một "phần"), và xem xét cái còn lại. – chi
Thật vậy ... dù sao. – chepner
Tôi không biết, nhưng tôi sẽ cố gắng tìm hiểu. – augustss