Actions setting and modifying a kind of reference or state return (), getting the value is separate, e.g. writeIORef and modifyIORef both return (), only readIORef returns the value in an IORef
A function or action taking a some kind of state and returning a pair consisting of a result and a new state, the result is the first element of the pair and the new state is the second, see e.g. Random
A module defining a data type X has the itself the name X, e.g. StablePtr. For convenience there are modules simply re-exporting modules which are often used together, e.g. Foreign.
When the type Either is used to encode an error condition and a normal result, Left is used for the former and Right for the latter, see e.g. MonadEither.
A module corresponding to a class (e.g. Bits) contains the class definition, perhaps some auxiliary functions, and all sensible instances for Prelude types, but nothing more. Other modules containing types for which an instance for the class in question makes sense contain the code for the instance itself.
Record-like C bit fields or structs have a record-like interface, i.e. pure getting and setting of fields. (TODO: Clarify a little bit. Add examples.)
Although the possibility of partial application suggests the type attr -> object -> object for functions setting an attribute or value, infix notation with backquotes implies object -> attr -> object. (TODO: Add Examples.)