[Haskell-cafe] Re: Boost equivalent

Al Falloon afalloon at synopsys.com
Thu Feb 1 15:35:31 EST 2007


Boost.Python is for extending Python with C++, or embedding Python in 
C++. This is especially useful because it allows you to use Python as an 
extension language for a C++ program.

Presumably Boost.Haskell would be for integrating Haskell code with C++, 
which would of course be useful, but the main use case (an embedded 
extension language) that draws people to Boost.Python isn't as much of a 
draw for Haskell because of the compilation phase.

On the other hand, I suppose you could always integrate a Haskell 
interpreter like Hugs, or even go the HsPlugins route and dynamically 
load a compiled module, but the fit doesn't seem as natural as it does 
with a latently typed scripting language.

There are also technical problems that are hard to overcome. Extending 
Python is mostly done in C, so a C++ library to add some nice sugar is a 
good fit. Haskell, OTOH, embeds C programs via its FFI. There doesn't 
seem to be any way to export functions and value from C++ to Haskell, 
but instead the C++ code must import from Haskell. All the heavy lifting 
is done on the Haskell side, so there isn't as much opportunity to write 
a slick C++ library.

This could change if someone made a version of Hugs that can be linked 
in as a library with a documented C API for evaluating Haskell code and 
mucking with Haskell values. But I don't think its much of a priority 
right now :)

--
Alan Falloon

Alexy Khrabrov wrote:
> One of the great strengths of Python is Boost.Python.  Practitioners say 
> it's a major advantage of Python over Ruby, for example.  So the 
> question is not whether there's a Boost in Haskell -- C++ and Haskell 
> are too different for it to have much meaning -- but whether there's or 
> going to be a Boost.Haskell?
> 
> Cheers,
> Alexy
> 
> On Feb 1, 2007, at 5:03 AM, John Ky wrote:
>> Does the Haskell community have an equivalent to C++ community's Boost 
>> project with the aim of writing libraries for the eventual inclusion 
>> into Haskell?



More information about the Haskell-Cafe mailing list