是否有一个原因(性能,内存,类型系统)为什么元组不是HList而函数不是从HList到某个值的映射?
答案 0 :(得分:7)
性能和记忆都。元组有O(1)
个元素访问权限;如通常构造的那样,HList
是一个列表,因此具有O(n)
。此外,元组需要一个额外对象的内存,n
引用其他对象,而HList
(作为列表)每个需要一个对象(加上next
指针)。由于对象的开销大约是两个引用,因此将n+2
内存使用量转换为4n+2
。核心语言结构并不那么棒。
答案 1 :(得分:2)
扩展AnyVal的HArray可能具有与TupleX类相当的性能和内存要求。唯一的开销是数组的长度和数组索引边界检查。