In docs/ffi-notes.txt, I find the following: ------------------------------------------------------------ o foreign export static is not implemented. You can code around this by writing: foreign import dynamic foo_dynamic :: Addr -> (A -> B -> C) foreign label foo_addr :: Addr foo = foo_dynamic foo_addr instead of: foreign import foo :: A -> B -> C ------------------------------------------------------------------------- Does anyone understand what this is saying? I can't grok it. The work around presented here seems to have nothing to do with foriegn export static. It looks like a workaround to not having foreign IMPORT static. (Which we of course dont need a workaround for :)). Is something extremely tricky going on or am i just dense? Anyway, just curious, I have not had any trouble working around by passing pointers to the C-side using foreign export dynamic. I have just wondered about this for a long long time :)