haskell - 在未装箱的向量中

标签 haskell unboxing algebraic-data-types

我想在 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/

相关文章:

haskell - 生成 Haskell 模块依赖树

java - 为什么 Java 编译器有时允许对 null 进行拆箱?

c# - 如何拆箱元组?

scala - Scala 类型系统如何知道 cons + Nil 是详尽无遗的?

haskell - 什么是 Cabal 组件以及如何使用它们?

haskell - 从脚本本身获取 Haskell Stack & Turtle 脚本的源目录

haskell - 如何在哈姆雷特中使用 $maybe

C# 类型推断获取错误的类型

haskell - 如何在 Haskell 中使用具有数据类型的高阶函数

string - Haskell Lambda 折叠