У меня есть набор пользователей, групп и сопоставление между пользователями и группами. У меня есть различные функции, которые управляют этими наборами, однако нельзя добавлять пользователя < -> сопоставление групп для пользователя, которого не существует, и не удалять группу, которая все еще имеет пользователей в качестве членов и т. Д.Haskell «exceptions»
в основном я хочу, чтобы эти функции выдавали «исключения», которые должны быть явно обработаны вызывающим.
Я сначала подумал о возвращении что-то вроде этого:
data Return r e = Success r | Exception e
И если вызывающий абонент не шаблон матч против Exception
, они будут надеяться получить предупреждение компилятора, или, по крайней мере, имеют очевидные выполнения ошибка при возникновении проблемы.
Это лучший подход, и есть ли готовое решение, которое это делает? Примечание. Мне нужно бросить и поймать «исключения» в чистом коде, а не в IO Monad.