Как перехватывать исключения чтения в Haskell?

В следующем коде на Haskell:

data Cmd =  
    CmdExit |  
    CmdOther  
    deriving (Read, Show)

guiString2Cmd s =  
    (return (read s :: Cmd)) `catch` \(e :: SomeException) -> return CmdExit

Если я делаю :

guiString2Cmd "CmdOther"

, все работает нормально. Однако, если я сделаю :

guiString2Cmd "some wrong string"

, код вылетит вместо оценки CmdExit.

Как заставить код обрабатывать исключение, а не сбой?

11
задан mbrodersen 5 May 2012 в 08:05
поделиться