An Interface Definition Language(IDL) lets you describe both the type signatures of a function and the data types it takes as arguments in an architecture-independent/programming language neutral way. (i.e., it's a specification language, not a programming language).
Since one of the origins of IDL is from distributed (RPC based) programming, it is perhaps not too surprising that the type system it supports (and its syntax) is closely based on that of C, the system programming language of choice at the time when RPC systems were initially developed.
HaskellDirect currently implements two dialects of IDL: the OSF DCE dialect, including the extensions made by Microsoft to accommodate the expression of COM interfaces using IDL. HaskellDirect has also got a front-end for the dialect of IDL used by the OMG IIOP CORBA specification.
Over the next couple of sections, IDL is introduced by way of example, showing you how the HaskellDirect compiler can be used to create Haskell bindings to libraries and COM components.