6

是否有原因(性能、内存、类型系统)为什么 Tuple 不是 HList 并且 Function 不是从 HList 到某个值的映射?

4

2 回答 2

7

性能和内存兼而有之。元组可以O(1)访问它们的元素;正如通常构造的那样,HList是一个列表,因此具有O(n). 此外,元组需要内存来存储一个n引用其他对象的额外对象,而HList(作为列表)每个需要一个对象(加上一个next指针)。由于一个对象的开销大约是两个引用,这会将n+2内存使用量转化为4n+2. 对于核心语言结构来说并不是那么棒。

于 2013-01-24T12:05:12.550 回答
2

扩展AnyVal的HArray 可能具有与 TupleX 类相当的性能和内存要求。唯一的开销是数组长度和数组索引边界检查。

于 2013-01-24T12:25:01.257 回答