我想在 Data.Vector.Unboxed.Unbox 向量中存储类似 Either 类型的内容。我假设我应该为“Either a b”创建一个 Unbox 实例,其中 a 和 b 被 Unbox(暂时忽略孤儿问题)。这样做的最佳方法是什么?我应该以与 (Bool,a,b) 相同的方式存储它吗?我更关心速度而不是空间。
最佳答案
要将总和类型存储在未装箱的结构中,您需要使用它们的乘积编码。例如。作为类型标记和值对的元组。
所以:
Unbox a, Unbox b => Either a b
-->
Unbox (Int, a, b)
为 a 和 b 的“空”槽设置适当的默认值。
关于haskell - 在未装箱的向量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21948561/