Главная » Haskell » Prelude: Алгебраические типы данных

0

Тип: ()

Описание: тип () является примитивным типом для описания пустых значений. Любое пустое значение должно иметь этот тип (аналог типа void  в языке C). Определение:

data  () = ()

deriving (Eq,  Ord,  Ix, Enum, Read, Show, Bounded)

Является экземпляром классов Eq, Ord, Ix, Enum, Read, Show и Bounded. Определён внутри транслятора.

Тип: Bool

Описание: тип Bool предназначен для представления булевских значений истинности, то есть значений «ИСТИНА»  и «ЛОЖЬ».

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

data  Bool

=  False

|  True

deriving (Eq,  Ord,  Ix, Enum, Read, Show, Bounded)

Является экземпляром  классов Eq, Ord, Ix, Enum, Read,  Show и Bounded.

Тип: Char

Описание: тип  Char является примитивным,  определён внутри  транслятора и предназначен для представления однобайтовых символов.

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

data  Char

Является экземпляром  классов Eq, Ord, Ix, Enum, Read,  Show и Bounded.

Тип: Maybe

Описание: тип Maybe используется  для представления значений, которые могут быть «пустыми». Например, некоторые функции в результате своей работы могут не возвратить никакого результата (из-за ошибки или ещё по какой-то причине), но при этом важно показать, что функция именно не вернула никакого результата. Для этих целей используется часть Nothing,  которая не хранит значений. Если же  значение необходимо вернуть, то используется часть Just,  в которой хранится значение произвольного типа a.

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

data  Maybe  a

=  Nothing

|  Just  a

deriving (Eq,  Ord,  Read, Show)

Является экземпляром  классов Eq, Ord, Read, Show, Functor  и Monad.

Тип: Either

Описание: тип Either используется для представления значений, у которых может быть один из двух заявленных типов — a или b. Обычно этот тип используется в процессе отлова ошибок методом исключений — в одной из частей (например, Left) хранится строковое описание ошибки в случае ошибочных вычислений, в то время как в другой части хранится обычное значение.

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

data  Either a b

= Left a

| Right   b

deriving (Eq,  Ord,  Read, Show)

Является экземпляром  классов Eq, Ord, Read и Show.

Тип: Ordering

Описание: тип Ordering  является вспомогательным типом для  представления отношения порядка в операциях вида (<), (>=) и т. д.

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

data  Ordering

= LT

| EQ

| GT

deriving (Eq,  Ord,  Ix, Enum, Read, Show, Bounded)

Является экземпляром  классов Eq, Ord, Ix, Enum, Read,  Show и Bounded.

Тип: []

Описание: тип [] представляет  собой список произвольных  элементов одного типа. Является одним из основных типов, используемым в языке Haskell для работы.

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

data  [a]

= []

| a:[a]

deriving (Eq,  Ord)

Является экземпляром классов Eq, Ord, Read, Show, Functor и Monad. Определён внутри транслятора.

Тип: (,)

Описание: набор типов для представления  кортежей  произвольных  размеров. Данные типы определены внутри транслятора и являются однообразными. Определение:

data  (a, b)  = (a, b)

data  (a, b, c) = (a, b, c)

Стандарт предполагает, что любой транслятор должен определять подобные типы для представления  кортежей  длиной вплоть до  четырнадцати. Б?ольшие длины кортежей могут также предоставляться трансляторами, но стандарт языка не регламентирует их наличие.

Данные типы являются экземплярами  классов Eq, Ord, Ix, Read и Show.

Тип: Int

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

[-2147483648,   2147483647] ([?231, 231 ? 1]).

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

data  Int

Является экземпляром классов Eq, Ord, Num, Integral, Ix, Enum, Read, Show

и Bounded.

Тип: Integer

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

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

data  Integer

Является экземпляром классов Eq, Ord, Num, Integral, Ix, Enum, Read, Show

и Bounded.

Тип: Float

Описание: тип Float является примитивным и используется для представления действительных значений одинарной точности.

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

data  Float

Является экземпляром классов Eq, Ord, Num,  Real,  Fractional,  Floating,

RealFloat, Enum, Read и Show.

Тип: Double

Описание: тип Double является примитивным и используется для представления действительных значений двойной точности.

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

data  Double

Является экземпляром классов Eq, Ord, Num,  Real,  Fractional,  Floating,

RealFloat, Enum, Read и Show.

Тип: Ratio

Описание: тип Ratio предназначен для представления дробей с числителем и знаменателем.

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

data  Integral  a  => Ratio   a

=  !a  :%  !a deriving  (Eq)

Является экземпляром классов Eq, Ord, Num,  Real,  Fractional,  RealFrac,

Enum, Read и Show.

В целях удобства представления для этого алгебраического типа данных определён синоним Rational:

type  Rational =  Ratio   Integer

Этот синоним используется для представления обычных целочисленных дробей.

Тип: Exception

Описание: тип Exception  является сложным перечислением для представления различных вариантов исключений (ошибочных ситуаций), которые могут возникать при работе функций из стандартного модуля Prelude.

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

data  Exception

= ArithException ArithException | ArrayException ArrayException | AssertionFailed  String

| AsyncException  AsyncException  | BlockedOnDeadMVar  | Deadlock   | DynException  Dynamic

| ErrorCall String                      | ExitException ExitCode               | IOException  IOException

| NoMethodError String               | NonTermination                               | PatternMatchFail  String

| RecConError String                  | RecSelError   String                  | RecUpdError String

Является экземпляром класса Show.

Тип: ArithException

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

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

data  ArithException

= Overflow

| Underflow

| LossOfPrecision

| DivideByZero

| Denormal

deriving (Eq,  Ord)

Является экземпляром  классов Eq, Ord и Show.

Тип: ArrayException

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

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

data  ArrayException

= IndexOutOfBounds String

|  UndefinedElement  String deriving  (Eq,  Ord)

Является экземпляром  классов Eq, Ord и Show.

Тип: AsyncException

Описание: тип  AsyncException  используется для представления  исключений, связанных с синхронизацией вычислений.

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

data  AsyncException

= StackOverflow

| HeapOverflow

|  ThreadKilled deriving  (Eq,  Ord)

Является экземпляром  классов Eq, Ord и Show.

Тип: ExitCode

Описание: тип ExitCode предназначен для представления кодов завершения операций.

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

data  ExitCode

= ExitSuccess

| ExitFailure Int

deriving (Eq,  Ord,  Read, Show)

Является экземпляром  классов Eq, Ord, Read и Show.

Тип: IOException

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

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

data  IOException

= IOError

{

ioe_handle          ::  Maybe Handle, ioe_type               ::  IOErrorType, ioe_location      ::  String, ioe_description ::  String, ioe_filename        ::  Maybe FilePath

}

deriving  (Eq)

Является экземпляром  классов Eq и Show.

В целях совместимости со старыми версиями определён синоним:

type  IOError = IOException

Тип: IOErrorType

Описание: тип  IOErrorType   является перечислением,  характеризующим тип ошибки ввода/вывода.

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

data  IOErrorType  = AlreadyExists | NoSuchThing  | ResourceBusy        |  ResourceExhausted

| EOF                           | IllegalOperation       | PermissionDenied   |  UserError

| ProtocolError | UnsupportedOperation | OtherError |  DotNetException

deriving  (Eq)

Является экземпляром  классов Eq и Show.

Тип: IO

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

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

data  IO a

Является экземпляром классов Functor,  Monad и Show.

Тип: IOMode

Описание: тип IOMode является  перечислением и предназначен для представления способа открытия ресурсов (файлов, потоков).

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

data  IOMode

=  ReadMode

|  WriteMode

|  AppendMode

| ReadWriteMode

deriving (Eq,  Ord,  Ix, Bounded, Enum, Read, Show)

Является экземпляром  классов Eq, Ord, Ix, Enum, Read,  Show и Bounded.

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

По теме:

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