Arrays 如何在Data.Array.Repa中存储int[[int]]列表以启用并行操作?

Arrays 如何在Data.Array.Repa中存储int[[int]]列表以启用并行操作?,arrays,haskell,multidimensional-array,parallel-processing,multicore,Arrays,Haskell,Multidimensional Array,Parallel Processing,Multicore,我正在研究如何表示一个事务数据库,它可以被视为列表元素的列表,这些列表上的未来操作将意味着:投影、减少、获取最大值、拆分、减少某些元素等等 type Item = int transaction :: [Item] database :: [transaction] for example [[1,2,3], [2,3,4]] 我以前看过使用trie表示这种数据结构的作品 data LexicoTreeItem = Nil | Node item LexicoTreeItem L

我正在研究如何表示一个事务数据库,它可以被视为列表元素的列表,这些列表上的未来操作将意味着:投影、减少、获取最大值、拆分、减少某些元素等等

type Item = int

transaction  :: [Item]
database     :: [transaction]

for example [[1,2,3], [2,3,4]]
我以前看过使用trie表示这种数据结构的作品

data LexicoTreeItem = Nil | Node item LexicoTreeItem LexicoTreeItem int

-- lexicoTreeItem item next alt weigth
-- item is the item of the node
-- next is the rest of the transaction, each path of the trie is a transaction
-- alt is another transaction starting with the item
-- weigth is the number of transactions which use this item
例如,表示[[1,2,3],[1,2,3,4]]

 1 - 2 - 3
     |
     3 - 4
有人会写

Node 1 (Node 2 (Node 3 Nil Nil 1) (Node 3 (Node 4 Nil Nil 1) Nil 1 ) 2 ) Nil 2
问题在于,在处理haskell中的并行性时,这种数据结构效率不高。 我了解到
Data.Array.Repa
Data.Array
Node
更有效地处理并行性

但我不知道如何表示上述数据库。在方式上能够做一些操作,如:投影、缩小、列表、最大化、抑制等。。。并行使用Haskell


感谢大家的回复

Data.Array.Repa可以处理二维数组,但它们必须是矩形的。[[Int]]表单不强制使用矩形形状。如果是矩形,则可以使用Data.Array.reau.fromList将展平的[Int]转换为数组。

Data.Array.Repa可以处理二维数组,但它们必须是矩形。[[Int]]表单不强制使用矩形形状。如果它是矩形的,则可以使用Data.Array.reau.fromList将展平的[Int]转换为数组。

您是否考虑过向量向量(使用包中的Data.Vector)?这可以是装箱的。您是否考虑过向量向量(使用包中的Data.Vector)?只要是盒装的,这个就可以。