Trong đơn vị lỗi, lỗi đầu tiên tạm dừng bất kỳ thực thi nào nữa chỉ mang lỗi thông qua bất kỳ ràng buộc nào sau đây.
Điều gì đơn vị dừng lại ở thành công chỉ mang lại thành công về phía trước, và về cơ bản nuốt bất kỳ lỗi nào và cố gắng ràng buộc tiếp theo bất chấp sự thất bại của lần trước?
Đơn vị lỗi có thể được sử dụng cho việc xử lý thất bại này như thành công, nhưng tôi tò mò liệu các thư viện mặc định có một đơn vị cho mục đích cụ thể này, gần giống như một đơn vị Or trong tâm trí của tôi "Làm điều này hoặc điều đó"
Biên tập:
Hành vi sẽ là:
Left "fail" >>= (\x -> Right "win") >>= (\x -> Left "ahh neener") >>= (\x -> Right (x + " yay"))
Trong lỗi đơn nguyên, giá trị bên trái đầu tiên chỉ được chuyển tiếp, vì vậy kết quả của điều đó là Left "fail"
. Hành vi tôi muốn là ở trên, Right "win yay"
đó là một đơn vị tầm thường để thực hiện tôi có thể tự viết, nhưng đã tìm ra thứ gì đó tồn tại để làm như vậy (có thể không sử dụng Either, nhưng đó là điều đầu tiên xuất hiện trong hành vi đó).