2016-11-10 33 views
12

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 :: ay :: 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 

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 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?

+5

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

+1

Thật vậy ... dù sao. – chepner

+5

Tôi không biết, nhưng tôi sẽ cố gắng tìm hiểu. – augustss

Trả lời

20

Như đã được chỉ ra trong phần bình luận, Haskell có các phần từ Miranda (và Orwell). David Turner nói rằng ông có ý tưởng từ Richard Bird và David Wile.

Tôi vừa trò chuyện với Richard Bird. Anh ta nói anh ta không nhớ tên của nó đến từ đâu, nhưng anh ta nghĩ đó là David Wile, người đã đặt ra nó. Thật không may, David Wile đã chết năm ngoái, vì vậy chúng tôi có lẽ sẽ không bao giờ biết. Nhưng, Richard đã thừa nhận rằng anh ta là người đã thuyết phục David Turner và Phil Wadler thêm các phần bằng ngôn ngữ của họ.

Đây là trang từ luận án của Wile, đây là lần đầu tiên biết đến "phần". http://imgur.com/a/cQDlu

+0

Cảm ơn bạn đã kiểm tra. Tôi chưa bao giờ suy nghĩ nhiều, nhưng có rất nhiều thứ khác dựa trên lý thuyết thể loại, dường như điều này cũng có thể xảy ra. – chepner

2

Có thể, nó xuất phát từ hoạt động "mảng mảng", được sử dụng chủ yếu ở Fortran, đặc biệt là để trích xuất cột hoặc hàng. Điều đó có ý nghĩa, nếu bạn xem xét việc tạo bảng tra cứu từ hàm hai tham số. https://www.phy.ornl.gov/csep/pl/node16.html

Các vấn đề liên quan