HaskellDirect is an IDL compiler for Haskell,
which offers a helping hand to the Haskell programmer that wants to better
interact with and reuse external code.
Interfacing Haskell code to external code involves the conversion of values between the Haskell world and the outside, as data representations and details of how memory is managed, are worlds apart at times. Manually writing the boilerplate code that takes care of this conversion is about as exciting as watching grass grow and, as a result, error prone.
Using an Interface Definition Language (IDL) as basis, HaskellDirect automates the generation of such impedance matching code, generating all the necessary marshaling code for you.
With IDL, the functionality provided by a programming interface is specified in a programming language neutral framework. The HaskellDirect IDL compiler converts this specification into a set of method stubs. Depending on how the compiler is invoked, these stubs can be used to:
The HaskellDirect IDL compiler currently groks both the OSF DCE dialect of IDL (including the various extensions introduced by the Microsoft IDL compiler) and the OMG IIOP/CORBA dialect. (Only the former can be used for describing COM interfaces.)
The current version of HaskellDirect is 0.21 (released Jan 2004), and is only available in source format:
The sources compiles out of the box with recent versions of GHC, such as ghc-6.2. The IDL compiler's output can be used together with both GHC and Hugs98.
HDirect comes with a BSD-style license, and the sources are also available via the GHC/fptools CVS server (in fptools/hdirect.) Compared to 0.16, 0.17 fixes a slew of minor bugs/problems; the feature set is unchanged.
[Note: Mostly of historical interest; 0.16 doesn't work with current versions of GHC nor Hugs]
The last major release was 0.16 (released 04/11/99), which is available in source and binary format:
If you want to compile up the 0.16 sources, you'll need ghc-4.04 / 4.05. The 0.16 Win32 binary distribution can be used to produced output for use with ghc-4.04/4.05 and Hugs98.
The HaskellDirect sources are available via the Haskell CVS, as module fptools/hdirect.
Please direct any feedback or bug reports to sof at galois.com