Главная » Haskell » Модуль Error необходимый для проверки возвращаемых при маршализации значений и генерации исключений типа userError в случаях наличия ошибок в значениях

0

содержит функции, необходимые для проверки возвращаемых при маршализации значений и генерации исключений типа userError в случаях наличия ошибок в значениях.  Предполагается, что этот модуль подключается в проект при помощи реимпорта из модуля Marshal, однако если имеется необходимость использования этого модуля отдельно, его можно подключить следующим образом:

import Foreign.Marshal.Error

В модуле описано шесть функций, используемых для обработки ошибок.

Функция: throwIf

Описание: выполняет монадическое действие ввода/вывода, генерируя исключение в случае, если предикат (первый аргумент) возвращает значение True на ре-

зультате действия. Если исключение не возбуждается, возвращается  результат монадического действия. Второй аргумент используется для получения строки сообщения об ошибке.

Определение:

throwIf :: (a  ->  Bool)   ->  (a  ->  String)  ->  IO a ->  IO a throwIf pred  msgfct  act  = do  res  < act

(if  pred  res

then  ioError .  userError . msgfct else return)  res

Функция: throwIf-

Описание: вариант функции throwIf, который используется в случае, когда результат выполнения монадического действия не нужен, но важны лишь побочные эффекты, предоставляемые монадой IO.

Определение:

throwIf_ :: (a  ->  Bool)   ->  (a  ->  String) ->  IO  a ->  IO () throwIf_ pred  msgfct  act  = void  $  throwIf pred  msgfct  act

Функция: throwIfNeg

Описание: вариант функции throwIf, генерирующий исключения в случаях отрицательного результата.

Определение:

throwIfNeg :: (Ord  a, Num  a)  => (a  ->  String)  ->  IO a ->  IO a throwIfNeg = throwIf (<  0)

Функция: throwIfNeg-

Описание: вариант функции throwIfNeg, который используется в случае, когда результат выполнения монадического действия не нужен, но важны лишь побочные эффекты, предоставляемые монадой IO.

Определение:

throwIfNeg_ :: (Ord  a, Num  a)  => (a  ->  String) ->  IO  a ->  IO () throwIfNeg_ = throwIf_ (<  0)

Функция: throwIfNull

Описание: вариант функции throwIf, генерирующий исключения в случаях, если в результате выполнения монадического действия возвращён пустой указатель.

Определение:

throwIfNull :: String ->  IO (Ptr a)  ->  IO  (Ptr a) throwIfNull = throwIf (==  nullPtr)  . const

Функция: void

Описание: уничтожает результат монадического действия ввода/вывода.

Определение:

void  :: IO a ->  IO ()

void  act  = act  >> return ()

Источник: Душкин Р. В., Справочник по языку Haskell. М.: ДМК Пресс, 2008. 544 с., ил.

По теме:

  • Комментарии