为什么Perl 6序列'A'...'AA'只有一个元素?

时间:2018-10-24 19:21:50

标签: sequence perl6

今天我注意到序列'A' ... 'AA'仅包含一个元素:

> 'A' ... 'AA'
(A)

我认为它将包含27:字母加上最后的AA

如果我明确提供一个生成器,它将执行以下操作:

> 'A', *.succ ... 'AA'
(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA)

文档说默认生成器是*.succ*.pred,具体取决于端点的比较方式。但是:

> 'A' cmp 'AA'
Less

所以看来我应该默认使用*.succ生成器。我肯定没有得到*.pred生成器:

> 'A', *.pred ... 'AA'
Decrement out of range
  in whatevercode  at <unknown file> line 1

这是怎么回事?

1 个答案:

答案 0 :(得分:6)

查看使用的代码:rakudo/operators

您的代码与

非常相似
"A", *.succ ...^ * gt "AA"

({"B" gt "AA"True

和Curt Tilmes的代码类似于

"A", *.succ ...^ {$_ gt "ZZ" or .chars > "ZZ".chars}
"A", *.succ ...^ {$_ gt "YY" or .chars > "YY".chars}

({"Z" gt "YY""AAA".chars > "ZZ".charsTrue