英文:
Haskell Massiv Array Size Limit
问题
如果Massiv以及其他数组库都使用Int作为索引,那么如何构建和索引超过2^29个元素的数组呢?Int的大小只能达到2^29。我在源代码中注意到,在数组操作中使用了线性索引,所以我认为将一个向量写成二维数组仍然会遇到相同的问题。
在Massiv内部是否有解决方案,或者是否有适用于具有超过2^29个元素的数组的其他数组库?
编辑:@Thomas刚提到Int的maxBound是与机器相关的。然而,我仍然想知道如何索引具有大于Int的maxBound的元素数量的数组。
英文:
If Massiv, as well as other array libraries use Int for indexing, then how does one construct and index arrays larger than 2^29 elements? Int can only be as large as 2^29. I noticed in the source code that Linear indexing is used on array operations aswell so I would assume that just writing a vector as a two dimensional array would still have the same issue.
Is there a solution to this within Massiv or is there another array library suitable for arrays with more than 2^29 elements?
Edit: @Thomas just mentioned that the maxBound of Int is machine dependent. How ever I would still like to know how to index arrays with a number of elements greater than the maxBound of Int.
答案1
得分: 3
没有办法在内存中创建一个包含超过 maxBound :: Int
个元素的列表,因为通常预期 Int
的大小足以覆盖完整的可寻址内存空间。因此,在您的系统上,长度大于 maxBound :: Int
的假设列表或数组将无法适应可寻址内存并无法存储,因此无需一种机制来索引到这样的结构中。
英文:
There is no way to create a list that contains more than maxBound :: Int
elements in memory, because the size of an Int
is generally expected to be sufficient to cover the full addressable memory space. A hypothetical list or array of length greater than maxBound :: Int
on your system therefore would not fit in addressable memory and could not be stored, thus there is no need for a mechanism by which one could index into such a structure.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论