simbolos reservadas palabras librerias instalar importar ejemplos descargar compilador como anidado exception haskell throw

exception - librerias - palabras reservadas en haskell



¿Cómo lanzar una excepción y salir del programa en Haskell? (1)

Tengo una pregunta: ¿cómo puedo lanzar una excepción y salir del programa? He escrito un ejemplo simple:

-- main.hs import Test main = do Test.foo "" putStrLn "make some other things"

Aquí está el módulo:

moldule Test where foo :: String -> IO () foo x = do if null x then THROW EXCEPTION AND EXIT MAIN else putStrLn "okay"

Quiero comenzar esto y lanzar una excepción y salir del programa, pero ¿cómo?


Bueno, podrías intentarlo

foo :: String -> IO () foo x = do if null x then error "Oops!" else putStrLn "okay"

O bien, si tiene la intención de detectar el error eventualmente, entonces

import Control.Exception data MyException = ThisException | ThatException deriving (Show, Typeable) instance Exception MyException ... foo :: String -> IO () foo x = do if null x then throw ThisException else putStrLn "okay"

A menudo hay más mecanismos de haskelly que puede usar, como devolver valores empaquetados en el tipo Maybe o alguna otra estructura que describa el fallo. Las excepciones parecen encajar mejor en los casos en que la devolución de tipos complicados complicaría demasiado las interfaces reutilizables.