Dường như nổi tiếng rằng các ngôn ngữ lập trình không thể có tổng, sản phẩm và không có sự kết hợp với nhau.
Q1 . Điều này có đúng không? Dưới đây (hoặc trong liên kết trên tôi đã đưa ra) là một đối số một phần.
Tuy nhiên, lập trình chung với các điều chỉnh của Hinze bỏ qua vấn đề, ngay cả sau khi thảo luận chính xác phần nào là danh mục liên quan. Cụ thể, ông nói (dường như không cần đặt trước) về việc Haskell được mô hình hóa theo danh mục của các đơn đặt hàng từng phần liên tục nghiêm ngặt và có các khoản tiền và sản phẩm. Nhưng chúng ta biết rằng Haskell không có khoản tiền (phải không?). (Một phần của bài viết sử dụng S e t thay thế, nhưng điều đó không cho phép không chấm dứt).
Q2 Vậy, tôi còn thiếu điều gì? Tôi thấy bốn lựa chọn:
- Mọi người thường bỏ qua việc không chấm dứt mục đích khi thảo luận về Haskell. Có lẽ bài báo này cũng làm điều đó. Nhưng tại sao người ta lại đề cập đến CPO?
- Rào cản tôi thảo luận có thể tránh được bằng những cách thông minh. Cụ thể, các mô hình giấy không có chức năng Haskell không nghiêm ngặt bởi các chức năng nghiêm ngặt f : A ⊥ → B , vì các lý do khác.
- Bài báo có đề cập đến giới hạn và tôi đã bỏ lỡ điều đó. Tôi đã dành một số nỗ lực để tìm kiếm đề cập này và không tìm thấy bất kỳ.
- Đây là một sai lầm thực sự và vì mọi người cứ khẳng định Haskell thực sự thiếu khoản tiền phân loại (như những người khác đồng ý), mặc dù các yêu cầu trên giấy
Either
là một điều như vậy. Tất cả mọi thứ hoạt động độc đáo thay vì trong các ngôn ngữ tổng thể với các loại quy nạp và cưỡng chế.
Lý lịch
Ví dụ, điều này có nghĩa là danh mục các tập hợp nhọn , với đối tượng bằng 0, không thể đóng bicartesian.