2014-05-18 13 views
9

Ho notato che c'è anche un tipo IOException in Control.Exception, qual è il punto di avere un modulo System.IO.Error e un tipo IOError separati? È lì solo per ragioni storiche? Dovrei evitare di usarlo e preferire Control.Exception.IOException?qual è il problema di System.IO.Error

risposta

12

Sì, è solo per ragioni storiche.

System.IO.Error ha un tipo IOError che è solo un sinonimo di tipo per IOException (in GHC comunque).

Il meccanismo di fancy exception hierarchy delle GHC non fa parte dello standard Haskell. Quindi, IOError viene utilizzato per la compatibilità con Haskell 2010.

Se si è soddisfatti della specifica di GHC, IOException e l'intera gerarchia di eccezioni è semplicemente migliore e deve essere preferita.

+0

grazie, ho ragione ogni nuovo sviluppo preferirebbe Control.Exception.IOException? C'è qualche altro modulo storico ancora usato/insegnato su Internet? – swang

+0

@ Gwenc37 Si prega di non utilizzare le tacche di codice su cose che non sono codice. – Qix

3

IOError è il vecchio tipo Haskell98 IO exception. Control.Exception e altre varianti più recenti non sono necessariamente compatibili con Haskell98, ma possiamo incorporare i vecchi errori Haskell98 in essi, quindi il sinonimo di tipo.

Problemi correlati