Главная » Haskell » Пакет модулей System

0

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

Модуль Cmd

В модуле Cmd определены   две функции, предназначенные  для  выполнения внешних команд. Использование модуля:

import  System.Cmd

Функция: system

Описание: возвращает код исполнения команды операционной системы, которая передаётся в эту функцию при помощи имени команды. Этот вызов может завершиться неудачей, возвратив один из следующих кодов: PermissionDenied — процесс не имеет прав доступа для осуществления операции; ResourcesExhausted  — недостаточно ресурсов  для  выполнения операции; UnsupportedOperation   — в операционной системе нет заданной команды.

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

system :: String ->  IO ExitCode

Функция определена в виде примитива.

Функция: rawSystem

Описание: вариант функции system, который  передаёт команде  операционной системы набор аргументов, который закодирован в виде списка.

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

rawSystem :: String ->  [String] ->  IO ExitCode

rawSystem cmd args  = system (unwords  (cmd : map  translate args))

Модуль CPUTime

Модуль CPUTime  содержит определения функций, которые  позволяют программисту на языке  Haskell обратиться к времени  использования  процессора. Использование модуля:

import System.CPUTime

Модуль содержит две функции, которые позволяют получить время использования процессора.

Функция: getCPUTime

Описание: возвращает  количество  пикосекунд, которое  используется текущей программой в общем массиве процессорного времени. Точность этого значения зависит от реализации. Функция  возвращает значение в монаде IO, поскольку значение недетерминировано (может отличаться от вызова к вызову). Определение:

getCPUTime  :: IO Integer

getCPUTime  = do (usec, unsec,  ssec,   snsec)  < getCPUUsage return (picoSec   *  fromIntegral usec   +

1000 *  fromIntegral  unsec  + picoSec  *  fromIntegral ssec    + 1000 *  fromIntegral  snsec)

Функция: cpuTimePrecision

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

cpuTimePrecision :: Integer

cpuTimePrecision = round  ((1000000000000::Integer) %   fromIntegral (clockTicks))

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

По теме:

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