Tôi hiện đang viết một dự án nơi tôi sử dụng nhiều máy biến áp đơn lẻ ListT
. Khi sử dụng danh sách đơn giản, việc thực hiện không xác định là rất dễ dàng. Tuy nhiên một khi tôi đã phải chuyển đổi mã của tôi thành ListT
, nó trở nên phức tạp hơn nhiều .Làm thế nào để chuyển đổi sạch giữa các danh sách và máy biến áp đơn vị ListT?
Là một ví dụ đơn giản: chuyển đổi [a]
-ListT a
thực sự đòi hỏi phải sáng tác hai chức năng:
conv :: (Monad m) => [a] -> ListT m a
conv = ListT . return
Mặc dù nó đơn giản, tôi ngạc nhiên đó là chưa có.
Câu hỏi:
- Có một số cách tốt hơn để xử lý nondeterminism nơi một biến đơn nguyên là cần thiết?
- Có bất kỳ kỹ thuật/thư viện nào để chuyển đổi qua lại giữa các danh sách và
ListT
một cách sạch sẽ không?
Những lý do chính xác là khá phức tạp, vì vậy tôi không thực sự muốn xây dựng quá nhiều về điều đó.
Có, tôi đồng ý rằng 'conv' là một hàm đơn giản. Tôi chỉ ngạc nhiên vì nó chưa có ở đó. Hầu như không có bất kỳ tiện ích nào trong mô-đun 'ListT' khiến tôi cảm thấy như tôi đang phát minh lại bánh xe. Đó là tất cả. – julkiewicz