Ho una serie di utenti, gruppi e una mappatura tra utenti e gruppi. Ho varie funzioni che manipolano questi set, tuttavia non si dovrebbe essere in grado di aggiungere un < utente -> mappatura di gruppo per un utente che non esiste, né rimuovere un gruppo che ha ancora gli utenti come membri, eccHaskell "eccezioni"
Così fondamentalmente voglio che queste funzioni generino "eccezioni" che devono essere esplicitamente trattate dal chiamante.
ho pensato di tornare qualcosa di simile:
data Return r e = Success r | Exception e
E se il chiamante non riesce a pattern match contro il Exception
, faranno si spera ottenere un avviso del compilatore, o per lo meno hanno un runtime evidente errore quando c'è un problema.
È questo l'approccio migliore, e c'è una soluzione preconfezionata che fa questo? Nota Ho bisogno di gettare e catturare "eccezioni" nel codice puro, non nell'IO Monade.