Tôi có một đơn nguyên cho một tính toán rằng có thể thất bại và làm một số đăng nhập:Đang cập nhật đơn nguyên bên ngoài chỉ trong biến đơn nguyên
f1 :: WriterT [String] (Either String) a
Tôi có một chức năng mà sẽ không thất bại nhưng hiện một số logging:
f2 :: Writer [String] b
Cách tốt nhất để cập nhật đơn vị ghi trong f1 bằng cách sử dụng nhật ký từ f2 và nắm bắt đầu ra của tính toán f2? Tại thời điểm này tôi đang thực hiện điều này:
f2result <- (\(r,l) -> do {tell l; return r}) (runWriter f2)
Tôi đang sử dụng thang máy để cập nhật đơn vị bên trong với tính toán khác, vì vậy hãy chuyển đổi xung quanh Writer và Monome sẽ không giải quyết được sự cố.
Cảm ơn danr và rampion cho câu trả lời của bạn. Tôi đã chọn sử dụng phương thức bọc. Mặc dù tôi có thể thay đổi kiểu f2, hàm đó xuất hiện trong các ngữ cảnh khác, do đó tôi muốn viết kiểu của nó mà không tham chiếu đến các nhu cầu của một hàm gọi cụ thể. – mskel