Nhớ lại việc thông qua việc tiếp tục chuyển đổi (CPS transform) mà mất để beta Một : = R R A (nơi R là cố định) và f : A → B để β f : β Một → β B được định nghĩa bởi β Trong thực tế chúng ta cóđơn nguyên tiếpvới các đơn vị η Một : Một → beta Một định nghĩa bởi η Một x : = λ r . r
Bây giờ chúng ta hãy suy nghĩ về cách chúng ta có thể biến đổi một nhị phân bản đồ , tức là, chúng tôi muốn γ f : β Một → β B → β C . Một cách nhanh chóng đi lên với γ Điều này có ý nghĩa từ quan điểm lập trình là tốt.
Đây là câu hỏi của tôi: là có một lý do sâu xa hơn cho , khác hơn so với thực tế là nó có vẻ đúng từ một quan điểm lập trình của xem? Ví dụ, có một loại lý thuyết hoặc khác "lý thuyết" lý do để nghĩ rằng γ làm cho tinh thần? Chẳng hạn, chúng ta có thể nấu ăn γ từ đơn nguyên một cách có hệ thống không?
Tôi đang tìm kiếm một cái nhìn sâu sắc vào CPS biến đổi của chức năng -ary.
Applicative
. Nó có liftA2
đó là tôi , xem hackage.haskell.org/packages/archive/base/4.2.0.0/doc/html/...
liftA2
là một phần của những gì tôi đã đề nghị. Khái niệm "khung thành ngữ" ( (| f x y z ... |)
dịch sang pure f <*> x <*> y <*> z <*> ...
) Applicative
dường như là cách có hệ thống để có được dạng n-ary trong câu hỏi của bạn. Tôi biết CT, nhưng có vẻ đơn giản nhất để nói về nó trong các điều khoản lập trình tiêu chuẩn. Nếu bạn chưa từng đi qua Applicative
trước đây, bạn có thể muốn xem xét các functor đơn hình lỏng lẻo (mặc dù tuyên bố của Haskell về nó cũng <*>
liên quan đến số mũ). Dù sao, tôi không có câu trả lời cho bạn nhưng đã cố gắng hiểu rõ hơn những gì bạn đang nhận được :)
liftM2
hoặc khái quát đếnApplicative
? Bạn có thể lấy được một phiên bản n-ary của những gì bạn mô tả (bằng ngôn ngữ cho phép bạn nói về các hàm đa hình n-ary) trực tiếp từ cấu trúc ứng dụng tiếp tục.