Spec-Zone.ru › Haskell 7

Foreign.C.Types

Copyright (c) The FFI task force 2001
License BSD-style (see the file libraries/base/LICENSE)
Maintainer ffi@haskell.org
Stability provisional
Portability portable
Safe Haskell Trustworthy
Language Haskell2010

Содержание

  • Представления типов C
    • Целочисленные типы
    • Числовые типы
    • Типы с плавающей точкой
    • Другие типы

Описание

Сопоставление типов C с соответствующими типами Haskell.

Представления типов C

Эти типы необходимы для точного представления прототипов функций C, чтобы получить доступ к интерфейсам библиотек C в Haskell. Система Haskell не обязана представлять эти типы точно так же, как C, но предоставляются следующие гарантии относительно типа Haskell CT, представляющего тип C t:

  • Если прототип функции C имеет t в качестве типа аргумента или результата, использование CT в соответствующей позиции во внешнем объявлении позволяет программе Haskell получить доступ ко всему диапазону значений, закодированных типом C; и наоборот, любое значение Haskell для CT имеет допустимое представление в C.
  • sizeOf (undefined :: CT) даст такое же значение, как sizeof (t) в C.
  • alignment (undefined :: CT) соответствует ограничению выравнивания, налагаемому реализацией C для t.
  • Члены peek и poke класса Storable отображают все значения CT на соответствующее значение t и наоборот.
  • Когда экземпляр Bounded определен для CT, значения minBound и maxBound совпадают с t_MIN и t_MAX в C.
  • Когда экземпляр Eq или Ord определен для CT, предикаты, определенные классом типов, реализуют то же самое отношение, что и соответствующий предикат в C для t.
  • Когда экземпляр Num, Read, Integral, Fractional, Floating, RealFrac, или RealFloat определен для CT, арифметические операции, определенные классом типов, реализуют ту же функцию, что и соответствующие арифметические операции (если доступны) в C для t.
  • Когда экземпляр Bits определен для CT, побитовая операция, определенная классом типов, реализует ту же функцию, что и соответствующая побитовая операция в C для t.

Целочисленные типы

Эти типы представлены как newtype типов в Data.Int и Data.Word, и являются экземплярами Eq, Ord, Num, Read, Show, Enum, Typeable, Storable, Bounded, Real, Integral и Bits.

newtype CChar Source

Тип Haskell, представляющий тип C char.

Конструкторы

CChar Int8

Экземпляры

Bounded CChar
Enum CChar
Eq CChar
Integral CChar
Num CChar
Ord CChar
Read CChar
Real CChar
Show CChar
FiniteBits CChar
Bits CChar
Storable CChar

newtype CSChar Source

Тип Haskell, представляющий тип C signed char.

Конструкторы

CSChar Int8

Экземпляры

Bounded CSChar
Enum CSChar
Eq CSChar
Integral CSChar
Num CSChar
Ord CSChar
Read CSChar
Real CSChar
Show CSChar
FiniteBits CSChar
Bits CSChar
Storable CSChar

newtype CUChar Source

Тип Haskell, представляющий тип C unsigned char.

Конструкторы

CUChar Word8

Экземпляры

Bounded CUChar
Enum CUChar
Eq CUChar
Integral CUChar
Num CUChar
Ord CUChar
Read CUChar
Real CUChar
Show CUChar
FiniteBits CUChar
Bits CUChar
Storable CUChar

newtype CShort Source

Тип Haskell, представляющий тип C short.

Конструкторы

CShort Int16

Экземпляры

Bounded CShort
Enum CShort
Eq CShort
Integral CShort
Num CShort
Ord CShort
Read CShort
Real CShort
Show CShort
FiniteBits CShort
Bits CShort
Storable CShort

newtype CUShort Source

Тип Haskell, представляющий тип C unsigned short.

Конструкторы

CUShort Word16

Экземпляры

Bounded CUShort
Enum CUShort
Eq CUShort
Integral CUShort
Num CUShort
Ord CUShort
Read CUShort
Real CUShort
Show CUShort
FiniteBits CUShort
Bits CUShort
Storable CUShort

newtype CInt Source

Тип Haskell, представляющий тип C int.

Конструкторы

CInt Int32

Экземпляры

Bounded CInt
Enum CInt
Eq CInt
Integral CInt
Num CInt
Ord CInt
Read CInt
Real CInt
Show CInt
FiniteBits CInt
Bits CInt
Storable CInt

newtype CUInt Source

Тип Haskell, представляющий тип C unsigned int.

Конструкторы

CUInt Word32

Экземпляры

Bounded CUInt
Enum CUInt
Eq CUInt
Integral CUInt
Num CUInt
Ord CUInt
Read CUInt
Real CUInt
Show CUInt
FiniteBits CUInt
Bits CUInt
Storable CUInt

newtype CLong Source

Тип Haskell, представляющий тип C long.

Конструкторы

CLong Int64

Экземпляры

Bounded CLong
Enum CLong
Eq CLong
Integral CLong
Num CLong
Ord CLong
Read CLong
Real CLong
Show CLong
FiniteBits CLong
Bits CLong
Storable CLong

newtype CULong Source

Тип Haskell, представляющий тип C unsigned long.

Конструкторы

CULong Word64

Экземпляры

Bounded CULong
Enum CULong
Eq CULong
Integral CULong
Num CULong
Ord CULong
Read CULong
Real CULong
Show CULong
FiniteBits CULong
Bits CULong
Storable CULong

newtype CPtrdiff Source

Тип Haskell, представляющий тип C ptrdiff_t.

Конструкторы

CPtrdiff Int64

Экземпляры

Bounded CPtrdiff
Enum CPtrdiff
Eq CPtrdiff
Integral CPtrdiff
Num CPtrdiff
Ord CPtrdiff
Read CPtrdiff
Real CPtrdiff
Show CPtrdiff
FiniteBits CPtrdiff
Bits CPtrdiff
Storable CPtrdiff

newtype CSize Source

Тип Haskell, представляющий тип C size_t.

Конструкторы

CSize Word64

Экземпляры

Bounded CSize
Enum CSize
Eq CSize
Integral CSize
Num CSize
Ord CSize
Read CSize
Real CSize
Show CSize
FiniteBits CSize
Bits CSize
Storable CSize

newtype CWchar Source

Тип Haskell, представляющий тип C wchar_t.

Конструкторы

CWchar Int32

Экземпляры

Bounded CWchar
Enum CWchar
Eq CWchar
Integral CWchar
Num CWchar
Ord CWchar
Read CWchar
Real CWchar
Show CWchar
FiniteBits CWchar
Bits CWchar
Storable CWchar

newtype CSigAtomic Source

Тип Haskell, представляющий тип C sig_atomic_t.

Конструкторы

CSigAtomic Int32

Экземпляры

Bounded CSigAtomic
Enum CSigAtomic
Eq CSigAtomic
Integral CSigAtomic
Num CSigAtomic
Ord CSigAtomic
Read CSigAtomic
Real CSigAtomic
Show CSigAtomic
FiniteBits CSigAtomic
Bits CSigAtomic
Storable CSigAtomic

newtype CLLong Source

Тип Haskell, представляющий тип C long long.

Конструкторы

CLLong Int64

Экземпляры

Bounded CLLong
Enum CLLong
Eq CLLong
Integral CLLong
Num CLLong
Ord CLLong
Read CLLong
Real CLLong
Show CLLong
FiniteBits CLLong
Bits CLLong
Storable CLLong

newtype CULLong Source

Тип Haskell, представляющий тип C unsigned long long.

Конструкторы

CULLong Word64

Экземпляры

Bounded CULLong
Enum CULLong
Eq CULLong
Integral CULLong
Num CULLong
Ord CULLong
Read CULLong
Real CULLong
Show CULLong
FiniteBits CULLong
Bits CULLong
Storable CULLong

newtype CIntPtr Source

Конструкторы

CIntPtr Int64

Экземпляры

Bounded CIntPtr
Enum CIntPtr
Eq CIntPtr
Integral CIntPtr
Num CIntPtr
Ord CIntPtr
Read CIntPtr
Real CIntPtr
Show CIntPtr
FiniteBits CIntPtr
Bits CIntPtr
Storable CIntPtr

newtype CUIntPtr Source

Конструкторы

CUIntPtr Word64

Экземпляры

Bounded CUIntPtr
Enum CUIntPtr
Eq CUIntPtr
Integral CUIntPtr
Num CUIntPtr
Ord CUIntPtr
Read CUIntPtr
Real CUIntPtr
Show CUIntPtr
FiniteBits CUIntPtr
Bits CUIntPtr
Storable CUIntPtr

newtype CIntMax Source

Конструкторы

CIntMax Int64

Экземпляры

Bounded CIntMax
Enum CIntMax
Eq CIntMax
Integral CIntMax
Num CIntMax
Ord CIntMax
Read CIntMax
Real CIntMax
Show CIntMax
FiniteBits CIntMax
Bits CIntMax
Storable CIntMax

newtype CUIntMax Source

Конструкторы

CUIntMax Word64

Экземпляры

Bounded CUIntMax
Enum CUIntMax
Eq CUIntMax
Integral CUIntMax
Num CUIntMax
Ord CUIntMax
Read CUIntMax
Real CUIntMax
Show CUIntMax
FiniteBits CUIntMax
Bits CUIntMax
Storable CUIntMax

Числовые типы

Эти типы представлены как newtypes базовых внешних типов и являются экземплярами Eq, Ord, Num, Read, Show, Enum, Typeable и Storable.

newtype CClock Source

Тип Haskell, представляющий тип C clock_t.

Конструкторы

CClock Int64

Экземпляры

Enum CClock
Eq CClock
Num CClock
Ord CClock
Read CClock
Real CClock
Show CClock
Storable CClock

newtype CTime Source

Тип Haskell, представляющий тип C time_t.

Конструкторы

CTime Int64

Экземпляры

Enum CTime
Eq CTime
Num CTime
Ord CTime
Read CTime
Real CTime
Show CTime
Storable CTime

newtype CUSeconds Source

Тип Haskell, представляющий тип C useconds_t.

Since: 4.4.0.0

Конструкторы

CUSeconds Word32

Экземпляры

Enum CUSeconds
Eq CUSeconds
Num CUSeconds
Ord CUSeconds
Read CUSeconds
Real CUSeconds
Show CUSeconds
Storable CUSeconds

newtype CSUSeconds Source

Тип Haskell, представляющий тип C suseconds_t.

Since: 4.4.0.0

Конструкторы

CSUSeconds Int64

Экземпляры

Enum CSUSeconds
Eq CSUSeconds
Num CSUSeconds
Ord CSUSeconds
Read CSUSeconds
Real CSUSeconds
Show CSUSeconds
Storable CSUSeconds

Для преобразования CTime в UTCTime, используйте следующее:

\t -> posixSecondsToUTCTime (realToFrac t :: POSIXTime)

Типы с плавающей точкой

Эти типы представлены как newtype Float и Double, и являются экземплярами Eq, Ord, Num, Read, Show, Enum, Typeable, Storable, Real, Fractional, Floating, RealFrac и RealFloat.

newtype CFloat Source

Тип Haskell, представляющий тип C float.

Конструкторы

CFloat Float

Экземпляры

Enum CFloat
Eq CFloat
Floating CFloat
Fractional CFloat
Num CFloat
Ord CFloat
Read CFloat
Real CFloat
RealFloat CFloat
RealFrac CFloat
Show CFloat
Storable CFloat

newtype CDouble Source

Тип Haskell, представляющий тип C double.

Конструкторы

CDouble Double

Примеры использования

Enum CDouble
Eq CDouble
Floating CDouble
Fractional CDouble
Num CDouble
Ord CDouble
Read CDouble
Real CDouble
RealFloat CDouble
RealFrac CDouble
Show CDouble
Storable CDouble

Другие типы

data CFile Источник

Тип Haskell, представляющий тип C FILE.

data CFpos Источник

Тип Haskell, представляющий тип C fpos_t.

data CJmpBuf Источник

Тип Haskell, представляющий тип C jmp_buf.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-C-Types.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API