使用模板生成 FFI 调用 Haskell
Generate FFI call using Template Haskell
在 Frames library 中,有一个 readTable
函数,可以根据 CSV 文件生成记录类型。
是否可以生成类似 foreign import ccall unsafe "// c code" c_foo :: Int -> IO ()
的调用?
我尝试使用 [d| ... |]
和 [t| ... |]
准引用来完成此操作,但在这两种情况下我都遇到了解析器错误。
是的,这是可能的。您看到的错误消息是由于 "// c code"
是 "Malformed entity string"。任何更理智的事情,你就可以参加比赛了:
ghci> :set -XTemplateHaskell
ghci> ffi = [d| foreign import ccall unsafe "foo" c_foo :: Int -> IO () |]
Here is an example which does pretty much exactly what you are asking about. Note that both the packages inline-c and inline-java靠这种东西
在 Frames library 中,有一个 readTable
函数,可以根据 CSV 文件生成记录类型。
是否可以生成类似 foreign import ccall unsafe "// c code" c_foo :: Int -> IO ()
的调用?
我尝试使用 [d| ... |]
和 [t| ... |]
准引用来完成此操作,但在这两种情况下我都遇到了解析器错误。
是的,这是可能的。您看到的错误消息是由于 "// c code"
是 "Malformed entity string"。任何更理智的事情,你就可以参加比赛了:
ghci> :set -XTemplateHaskell
ghci> ffi = [d| foreign import ccall unsafe "foo" c_foo :: Int -> IO () |]
Here is an example which does pretty much exactly what you are asking about. Note that both the packages inline-c and inline-java靠这种东西