Tôi có một nhóm người dùng, nhóm và bản đồ giữa người dùng và nhóm. Tôi có các chức năng khác nhau để thao tác các bộ này, tuy nhiên, người dùng không thể thêm người dùng < -> lập bản đồ nhóm cho người dùng không tồn tại hoặc xóa nhóm mà vẫn có người dùng làm thành viên, v.v.Haskell "ngoại lệ"
Vì vậy, về cơ bản tôi muốn các chức năng này để ném "ngoại lệ" mà phải được xử lý một cách rõ ràng bởi người gọi.
đầu tiên tôi nghĩ đến việc trở về một cái gì đó như thế này:
data Return r e = Success r | Exception e
Và nếu người gọi không mẫu trận đấu với các Exception
, họ hy vọng sẽ nhận được một cảnh báo trình biên dịch, hoặc ít nhất có một thời gian chạy rõ ràng lỗi khi có sự cố.
Đây có phải là cách tiếp cận tốt nhất và có giải pháp được đóng gói sẵn không? Lưu ý tôi cần phải ném và bắt "ngoại lệ" trong mã thuần túy, không phải là IO Monad.