gpt4 book ai didi

haskell - 如何从外部代码确定数据的构造函数?

转载 作者:行者123 更新时间:2023-12-03 14:05:30 26 4
gpt4 key购买 nike

在我的 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 为我完成这项工作。

最佳答案

推导 Enum为您的 Haskell 类型,并导出 fromEnumMyData :: MyData -> Int ; fromEnumMyData = fromEnum .

然后您可以通过查看 GHC 分配的 Int 标签在 C 端进行案例分析。

关于haskell - 如何从外部代码确定数据的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com