I've looked around at what my options are for writing C wrappers.  I
made a first attempt using hsc2hs, based mostly off of the examples
given in "Real World Haskell."

After running into difficulty there, I thought I might try using c2hs,
following this series of blog posts:

http://blog.ezyang.com/2010/06/the-haskell-preprocessor-hierarchy/

... and also modeled after Nick Ingolia's samtools wrapper:

https://github.com/ingolia/SamTools/tree/master/samtools

I have taken a brief look at gtk2hs, but that is a fairly large project
in comparison to what I'd like to do, and I had trouble boiling it down
into a useful 'template' to base my work off of.

But I think that I might be relying a bit too heavily on examples and
tutorials without fully understanding how I want the overall design of
my wrapper to work.

I have found it fairly difficult to find good tutorials on the subject,
so I'd be interested in anything you've written that you could provide a
link to.

One seemingly simple concept that I can't seem to find an answer to is
how one determines the output type of an 'effectful' C function by
looking at the header.  In the library that I'm working on, there are
several functions that take pointers to structs as input, perform
side-effects on those structs, and return 'void' as output.  So if there
is a haskell function that makes a foreign call to one of those
functions, does it simply return IO ()?

Maybe that's a bit of a vague question, so don't worry about detailed
answers, but that is they type of thing that I've been struggling with.

Dan

Christian Höner zu Siederdissen:
> Hi Dan,
> 
> part of the fault is indeed to be found with the summer. There has been
> an important RNA meeting a couple of weeks ago, and ICFP is only three
> weeks away ;-)
> 
> That being said, a new version of ADPfusion should be ready this week,
> making it significantly easier to write grammars and algebras for CFGs
> and similar things.
> 
> Instead of having to write
> f <<< base -~+ table +~- base
> you now just write
> f <<< base % table % base
> meaning the width of each (non-) terminal is now encoded in the (non-)
> terminals and not the combinators anymore.
> 
> With some additional improvements and the extreme goodness of constraint
> kinds, I believe the library closes to ADP usability and should have
> surpassed it in some instances, now.
> 
> I have some major changes planned for ``my'' libraries during the fall,
> to expend general usability, and have many ideas from the Benasque RNA
> meeting to be implemented. During ICFP I hope to do some hands-on stuff
> with SIMD for ADPfusion.
> 
> ADPfusion my highest-priority project right now, as I want to base all
> my existing tools on it to improve performance -- by a lot in some
> cases.
> 
> ==
> 
> Regarding you wrapper project, do you want to write them yourself? I
> wrote a tutorial some years ago on how to do that stuff. For more
> automated work, look toward gtkhs.
> 
> Gruss,
> Christian
> 
> * Dan Fornika <dforn...@gmail.com> [20.08.2012 21:10]:
>> Hello Biohaskellers,
>>
>> There hasn't been much action on the mailing list lately.  I'm curious
>> what people are working on.
>>
>> It seems like there is a lot of work to be done on splitting the
>> monolithic biolib down into smaller libraries, but there doesn't seem to
>> be much progress lately.
>>
>> So what's going on? Is everyone out enjoying the sunshine? Have people
>> receded back into the swamp of BioPerl?
>>
>> Lately I've been trying to learn how to wrap a C library with the FFI.
>> I'd like to wrap Dr. Jason Moore's Multifactor Dimensionality Reduction
>> library (libmdr), but I've found it really very difficult to manage the
>> conversion between C types and structs, and haskell types.
>>
>> But I'm not asking for advice here, I'm just curious what people are up
>> to, and what you see as high priority tasks to improve the biohaskell
>> libraries.
>>
>> Dan
>> _______________________________________________
>> Biohaskell mailing list
>> Biohaskell@biohaskell.org
>> http://malde.org/cgi-bin/mailman/listinfo/biohaskell

_______________________________________________
Biohaskell mailing list
Biohaskell@biohaskell.org
http://malde.org/cgi-bin/mailman/listinfo/biohaskell

Reply via email to