Trong nhiều trường hợp, nó không rõ ràng với tôi những gì là để đạt được bằng cách kết hợp hai monads với một biến áp thay vì sử dụng hai monads riêng biệt. Rõ ràng, bằng cách sử dụng hai monads riêng biệt là một rắc rối và có thể liên quan đến ký hiệu bên trong ký hiệu, nhưng có trường hợp mà nó chỉ là không đủ biểu cảm?Tại sao các biến thế đơn nguyên lại khác biệt với các đơn vị xếp chồng?
Một trường hợp có vẻ là StateT trong Danh sách: kết hợp các đơn vị không giúp bạn đúng loại và nếu bạn có đúng loại thông qua một chồng đơn lẻ như Bar (trong đó Bar a = (Reader r (List) Writer w (Identity a))), nó không làm điều đúng.
Nhưng tôi muốn có một sự hiểu biết chung và kỹ thuật hơn về chính xác những gì biến áp đơn nguyên được đưa vào bảng, khi chúng là và aren ' t cần thiết, và tại sao
Để làm cho câu hỏi này một chút tập trung hơn.
- Một ví dụ thực tế của một đơn vị không có biến áp tương ứng (điều này sẽ giúp minh họa những gì máy biến áp có thể làm điều đó chỉ cần xếp chồng monads không thể).
- Are StateT và ContT máy biến áp duy nhất mà cung cấp cho một loại không tương đương với các thành phần của chúng với m, cho một đơn nguyên m nằm bên dưới (bất kể là thứ tự mà chúng tôi sáng tác.)
(Tôi không quan tâm đến các chi tiết thực hiện cụ thể liên quan đến các lựa chọn khác nhau của thư viện, mà là câu hỏi chung (và có lẽ là Haskell) về những biến đổi/biến đổi đơn điệu được thêm vào như là một cách thay thế để kết hợp các hiệu ứng bằng cách xếp chồng các nhà xây dựng kiểu đơn lẻ.)
(Để cung cấp cho một bối cảnh nhỏ, tôi là một nhà ngôn ngữ học đang làm một dự án để làm giàu ngữ pháp Montague - chỉ cần gõ tính toán lambda cho compos ing ý nghĩa từ thành câu - với một chồng biến áp monad. Nó sẽ thực sự hữu ích để hiểu xem máy biến áp đang thực sự làm bất cứ điều gì hữu ích cho tôi.)
Cảm ơn,
Reuben
Ý bạn là gì khi "sử dụng hai monads riêng biệt"? Bạn có thể đưa ra một ví dụ không? – ErikR
Bản sao có thể có của [mtl, máy biến áp, monads-fd, monadLib và nghịch lý lựa chọn] (http://stackoverflow.com/questions/2769487/mtl-transformers-monads-fd-monadlib-and-the-paradox- của sự lựa chọn) –
Tôi đã bỏ phiếu để đóng bởi vì nó thực sự có âm thanh như bạn đang yêu cầu cho sự khác biệt giữa các thư viện biến áp monad khác nhau, và câu hỏi đó đã có một câu trả lời xuất sắc. Nếu bạn nghĩ rằng câu hỏi của bạn là khác nhau, có lẽ bạn có thể xây dựng. –