[Haskell-cafe] newbie - how to call a Haskell interpreter from C
stefanor at cox.net
Sat Aug 25 12:55:01 EDT 2007
On Sat, Aug 25, 2007 at 12:34:45PM -0400, Brock Peabody wrote:
> On 8/25/07, Henk-Jan van Tuyl <hjgtuyl at chello.nl> wrote:
> > The easiest way to run Haskell software from a C program is to give the
> > shell command:
> > runhaskell Foo.hs
> I'm a newbie but not that new :) I really have to be able to interpret the
> Haskell from within the same process.
> > A more advanced way is, to link Haskell libraries by means of the foreign
> > function interface (FFI) .
> > There are several tools to support FFI development . I am sure my list
> > of URL's is not complete.
> >  http://www.cse.unsw.edu.au/~chak/haskell/ffi/
> > <http://www.cse.unsw.edu.au/%7Echak/haskell/ffi/>
> > http://www.haskell.org/haskellwiki/FFI_Introduction
> > http://www.haskell.org/haskellwiki/FFI_cook_book
> >  http://www.haskell.org/haskellwiki/FFI_imports_packaging_utility
> > http://www.haskell.org/haskellwiki/HSFFIG
> My understanding is that FFI helps you to call into other languages from
> Haskell and vice-versa. I will definitely need this, but what I can't figure
> out how to do is to invoke the ghci or hugs interpreter programmatically,
> in-process. I didn't see a way to do that in the links you listed, am I
> missing something?
No, you're not missing anything, and there are no deliberately
embeddable Haskell interpreters. Your options are:
1a. GHC, native code:
Link libHSplugins.a into your program (compile Don's hs-plugins
library). Then call the external functions described in
Pro: Full GHC runtime speed
Con: Full GHC compile-time sloth
As big as GHC (20mbytes file size)
1b. GHC, bytecode:
Write a binding to the GHC-API runStmt function. foreign export it.
Pro: As fast as GHCi
Con: Still huge
Link Hugs. Study the source code to runhugs.
Pro: Much faster loading
Much smaller footprint
Con: Less polished
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20070825/bec32ab5/attachment.bin
More information about the Haskell-Cafe