解决方法
FFI不支持任意传递值
Haskell可存储类型.
您只能传递类型的值(其中一些是指针):
Int#,Word#,Char#,Float#,Double#,Addr#,StablePtr# a,MutableByteArray#,ForeignObj#,and ByteArray#.
所以,要传递一个结构,你必须通过C包装器来包装调用;它需要一个指针并将其值传递给您希望实际调用的C函数.
最近的GHC扩展允许“primop”导入,这绕过了FFI机制,并支持任意调用约定,并通过未装箱的元组传递结构.例如.
foreign import prim "ITCHv41_run" parseITCHv41# :: Addr# -> Word# -> (# Int#,Word# #)
你可以用这些来做这样的tricky low level stuff.