Hi Austin,

How do you know it's not your experience with FFI code that isn't biased? As far as I know, there has been no systematic attempt to document whether pure Haskell or FFI-based libraries are better designed and better maintained. Which means your statements come from your experience, and my statements come from my experience, and the truth is probably somewhere in between.

In my experience, FFI code is often based on bulk translation of C header files into the IO monad. It requires an exact version of a library to work (usually much older than the current), it does not compile out of the box, there's scant documentation, and very little high-level design has been imposed on the low-level C interface (may as well use C!). Exceptions to this rule, there are, but as I said before, my experience leads me to believe they *are* exceptions to a *general* rule.

Regards,

John

On Jan 8, 2009, at 3:47 PM, Austin Seipp wrote:

Excerpts from John A. De Goes's message of Thu Jan 08 12:14:18 -0600 2009:
But really, what's the point? FFI code is fragile, often uncompilable
and unsupported, and doesn't observe the idioms of Haskell nor take
advantage of its powerful language features.

This is a completely unfair generalization. The FFI is an excellent
way to interoperate with an extraordinary amount of external
libraries, and if you ask me, it's *worth* taking those pieces of C
code and wrapping them up in a nice, safe haskell interface. I will also
mention that Haskell has *the* simplest FFI I have ever used, which to
me only means it's easier to get it right (the fact that there are
customized *languages* like e.g. cython to make writing python
extensions easier makes me wonder.)

I suggest you take a look at the haskell llvm bindings - they are
extraordinarily well documented, and the high level interface uses
*many* haskell idioms that make the library safe and easy to use:

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ llvm-0.4.2.0

This code most certainly takes advantage of powerful features and
idioms that only Haskell can provide. Please do not take your bad
experiences with a few crappy binding (or not even crappy bindings,
perhaps bindings that just aren't very abstract) and extend them to
the bindings that are excellent with a sweeping statement like that.

Austin
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to