Chapel 中稀疏数组的稀疏切片

Sparse Slicing of Sparse Arrays in Chapel

dom: domain(2) 的稀疏子域上给定一些 A: [sps],切片 A[A.domain.dim(1), k] 产生第 k 列作为 dense 一维数组。如何检索稀疏 nD 数组的第 k th n−1 维切片作为 sparse (n-1)D 数组?

var nv: int = 8,
    D: domain(2) = {1..nv, 1..nv},
    SD: sparse subdomain(D),
    X: [SD] real;

SD += (1,2); X[1,2] = 1;
SD += (2,3); X[2,3] = 1;
SD += (3,1); X[3,1] = 1;
SD += (3,4); X[3,4] = 1;
SD += (4,5); X[4,5] = 1;
SD += (3,6); X[3,6] = 1;
SD += (6,8); X[6,8] = 1;

writeln(X);
writeln(X[X.domain.dim(1),2]);

returns

1.0
1.0
1.0 1.0 1.0
1.0
1.0

1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

在我成功进行稀疏切片的情况下,期望返回单个 1.0,并且能够通过在 slice.domain 上调用 writeln() 来检索该条目的位置。

我认为,不幸的是,您正在做正确的事情,并且您只是 运行 违反了当前(从小礼拜堂 1.16 开始)关于 slicing sparse domains 的限制。