I need to use values that are kept in a C header file - see below for an extract of the header file. What I'd like to be able to say is import Word import Bits data ICMPType = EchoReply | ICMPType1 | ICMPType2 | DestUnreach | SourceQuench ... deriving Enum encode :: ICMPType -> Word8 encode x = fromIntegral (fromEnum x) Is this a sensible approach? Are there any tools that could help? C->Haskell and HaskellDirect look possibilities but I'd welcome advice before I try and install them. Many thanks, Dominic. #define ICMP_ECHOREPLY 0 /* Echo Reply */ #define ICMP_DEST_UNREACH 3 /* Destination Unreachable */ #define ICMP_SOURCE_QUENCH 4 /* Source Quench */ #define ICMP_REDIRECT 5 /* Redirect (change route) */ #define ICMP_ECHO 8 /* Echo Request */ #define ICMP_TIME_EXCEEDED 11 /* Time Exceeded */ #define ICMP_PARAMETERPROB 12 /* Parameter Problem */ #define ICMP_TIMESTAMP 13 /* Timestamp Request */ #define ICMP_TIMESTAMPREPLY 14 /* Timestamp Reply */ #define ICMP_INFO_REQUEST 15 /* Information Request */ #define ICMP_INFO_REPLY 16 /* Information Reply */ #define ICMP_ADDRESS 17 /* Address Mask Request */ #define ICMP_ADDRESSREPLY 18 /* Address Mask Reply */ #define NR_ICMP_TYPES 18