如何在Chapel中对域进行就地“展开”

时间:2017-08-28 05:11:10

标签: chapel

Chapel中的expand命令返回一个新域。我想增加一个域名,如

var d: domain(1) = {1..5};
writeln(d);
 --{1..5}
expand(d)(1);
writeln(d);
 --{1..6};

2 个答案:

答案 0 :(得分:3)

从Chapel 1.15开始,域上的expand方法没有就地选项。您需要将expand的结果分配到所需的域:

var eDom = {1..5};
eDom = eDom.expand(1);
writeln(eDom); // {0..6}

expand听起来并不像你想要的那样,因为expand会在每个维度的两个方向上增长域名。要向矩形域添加一个索引,您可以为域分配域文字:

var rDom = {1..5};
const hi = rDom.last + 1;
rDom = {rDom.first..hi};
writeln(rDom); // {1..6}

对于不规则域,您可以使用add方法:

var aDom = {1, 3, 5, 7}; // an associative domain
aDom.add(9);
writeln(aDom.sorted()); // 1 3 5 7 9

请注意,您无法在矩形域上使用add方法。这在Chapel语言规范的version 0.983中的第19.8.6节中定义。

答案 1 :(得分:1)

一些online experiments on domain expansion

有些人记录在案,有些则没有:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100   161  100   161    0     0     89      0  0:00:01  0:00:01 --:--:--    89
100 88.5M  100 88.5M    0     0  99631      0  0:15:32  0:15:32 --:--:--  117k
Performing silent installation
 10 %
 20 %
 30 %
 40 %
 50 %
 60 %
Generating start scripts ...
Installing pip and setuptools
 90 %
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking setuptools
Downloading/unpacking pip
Installing collected packages: setuptools, pip
Successfully installed setuptools pip
Cleaning up...
 100 %
Congratulations! You successfully installed Jython 2.7.0 to directory /usr/local/jython-2.7.0.
 ---> 0672c44d1960