Tengo un conjunto de usuarios, grupos y un mapeo entre usuarios y grupos. Tengo varias funciones que manipulan estos conjuntos, sin embargo, uno no debería poder agregar un usuario < -> asignación de grupo para un usuario que no existe, ni eliminar un grupo que todavía tiene usuarios como miembros, etc.Haskell "excepciones"
Así básicamente quiero que estas funciones arrojen "excepciones" que deben ser tratadas explícitamente por la persona que llama.
pensé por primera vez de devolver algo como esto:
data Return r e = Success r | Exception e
Y si la persona que llama no coincidencia de patrones en contra de la Exception
, es de esperar que obtendrá una advertencia del compilador, o por lo menos tener un tiempo de ejecución obvia error cuando hay un problema
¿Es este el mejor enfoque, y hay una solución preempaquetada que hace esto? Tenga en cuenta que necesito lanzar y atrapar "excepciones" en código puro, no en IO Monad.