standard DIS | Haskell type | C type | comments
--- | --- | --- | ---
int i | Int | `int` |
char c | Char | `char` |
bool b | Bool | `int` | 0 for False, 1 for True
float f | Float | `float` |
double d | Double | `double` |
string s | String | `char*` | Persistence not required in either direction
addr a | Addr | `void*` | An immovable C address
foreign f r | ForeignObj | `void*` | r is the finalisation routine
stable s | a | `HaskellRef` | HaskellRef is just an index into the stable pointer table.