在我的 Haskell 程序中,我有一个带有许多构造函数的 ADT:
data MyData = Con1 |
Con2 |
...
Con20
我有一个foreign export ccall
函数,它包装[MyData]
成StablePtr's
. 调用它后,我需要确定使用哪个构造函数来构造每个元素。
可以这样解决
foreign export ccall getType :: StablePtr MyData -> IO CInt
getType (Con1) = return 1
getType (Con2) = return 2
...
但随后我需要在 C 标头中手动定义这些常量。这很容易出错,所以我想知道是否有办法让 GHC 为我完成这项工作。