将新的FFI方法插入GHC

Cac*_*tus 7 haskell ffi

有没有办法插入类型的Haskell函数

myFFI :: (C a) => String -> IO a
Run Code Online (Sandbox Code Playgroud)

(在哪里C描述我可以导入的变量类型的类型类)作为FFI方案进入GHC,这样我就可以在我的Haskell程序中编写像

foreign import myFFI "foo" foo :: T1 -> T2
Run Code Online (Sandbox Code Playgroud)

被编译成一个调用foo = unsafePerformIO $ myFFI "foo" :: T1 -> T2

我想这可以通过修改GHC来完成,但有没有办法通过我可以编写的插件来完成它而不会触及GHC代码库?

scl*_*clv 1

要回答评论中的问题(因为主要问题是用“使用 TH”回答的),您也可以使用 TH 来收集您已绑定的所有名称的列表。然后,在启动时,一个init调用可以遍历它并强制它们。