These types are needed to accurately represent C function prototypes, in order to access C library interfaces in Haskell. The Haskell system is not required to represent those types exactly as C does, but the following guarantees are provided concerning a Haskell type CT
representing a C type t
:
t
as an argument or result type, the use of CT
in the corresponding position in a foreign declaration permits the Haskell program to access the full range of values encoded by the C type; and conversely, any Haskell value for CT
has a valid representation in C.sizeOf
(undefined
:: CT)
will yield the same value as sizeof (t)
in C.alignment
(undefined
:: CT)
matches the alignment constraint enforced by the C implementation for t
.peek
and poke
of the Storable
class map all values of CT
to the corresponding value of t
and vice versa.Bounded
is defined for CT
, the values of minBound
and maxBound
coincide with t_MIN
and t_MAX
in C.Eq
or Ord
is defined for CT
, the predicates defined by the type class implement the same relation as the corresponding predicate in C on t
.Num
, Read
, Integral
, Fractional
, Floating
, RealFrac
, or RealFloat
is defined for CT
, the arithmetic operations defined by the type class implement the same function as the corresponding arithmetic operations (if available) in C on t
.Bits
is defined for CT
, the bitwise operation defined by the type class implement the same function as the corresponding bitwise operation in C on t
.These types are are represented as newtype
s of types in Data.Int and Data.Word, and are instances of Eq
, Ord
, Num
, Read
, Show
, Enum
, Typeable
, Storable
, Bounded
, Real
, Integral
and Bits
.
Haskell type representing the C char
type.
Haskell type representing the C signed char
type.
Haskell type representing the C unsigned char
type.
Haskell type representing the C short
type.
Haskell type representing the C unsigned short
type.
Haskell type representing the C int
type.
Haskell type representing the C unsigned int
type.
Haskell type representing the C long
type.
Haskell type representing the C unsigned long
type.
Haskell type representing the C ptrdiff_t
type.
Haskell type representing the C size_t
type.
Haskell type representing the C wchar_t
type.
Haskell type representing the C long long
type.
Haskell type representing the C unsigned long long
type.
These types are are represented as newtype
s of basic foreign types, and are instances of Eq
, Ord
, Num
, Read
, Show
, Enum
, Typeable
and Storable
.
Haskell type representing the C clock_t
type.
Haskell type representing the C time_t
type.
To convert CTime
to UTCTime
, use the following formula:
posixSecondsToUTCTime (realToFrac :: POSIXTime)Floating types
These types are are represented as newtype
s of Float
and Double
, and are instances of Eq
, Ord
, Num
, Read
, Show
, Enum
, Typeable
, Storable
, Real
, Fractional
, Floating
, RealFrac
and RealFloat
.
Haskell type representing the C float
type.
Haskell type representing the C double
type.
Haskell type representing the C FILE
type.
Haskell type representing the C fpos_t
type.
Haskell type representing the C jmp_buf
type.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4