calling FunPtr's?
John Meacham
john at repetae.net
Fri Oct 17 17:20:03 EDT 2003
On Fri, Oct 17, 2003 at 01:38:06PM +0100, Alastair Reid wrote:
> The simplest would be to generate some C code at runtime, pass it to gcc and
> dynamically load the resulting .o file.
yeah, I considered this but want to implement an interpreter where the
user has the ability to call arbitrary C functions, A C compiler can't
be guarenteed to exist.
> 1) It's going to be challenging to use the resulting Haskell functions because
> Haskell's typechecker won't know their type at runtime. You'll probably need
> to use something like the Dynamic library's runtime typechecking.
yeah, thinking about it the type I gave to callFunPtr is all wrong.
something involving Dynamic or existential types will probably have to
be used.
Okay, this seems like it will be much trickier than I expected, so I am
thinking of the following 'hack'
generate every foreign dynamic import for all types of functions with
less than say 5 arguments (I can probably prune this due to argument
promotion rules) then just call the appropriate mkFun on the function
pointer based on the types I want to pass to it. does this seem
plausable? I am not quite sure how I would chose the appropriate dynamic
import when they all have different types, in any case I will probably
not want to write this by hand.. is there any big overhead in attaching a
ton of forign import dynamic statements to a program?
John
--
---------------------------------------------------------------------------
John Meacham - California Institute of Technology, Alum. - john at foo.net
---------------------------------------------------------------------------
More information about the Haskell
mailing list