减少Perl 6中的逻辑运算符

Eug*_*sky 5 perl6

我正在尝试减少and并得到一个奇怪的输出:

> [and] 2>1, 3>2, put 1, put 2
2
1True
Run Code Online (Sandbox Code Playgroud)

同时如果我and在每个表达式之间放置,一切都还可以.

> 2>1 and 3>2 and put 1 and put 2
1
2
Run Code Online (Sandbox Code Playgroud)

这种差异的原因是什么?

Cur*_*mes 8

详细说明Håkon的评论.区别在于优先权.

这两个陈述相当于:

> [and] (2>1), (3>2), (put 1,(put 2))
2
1True
> (2>1) and (3>2) and (put 1) and (put 2)
1
2
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,它首先评估put 2,打印2和返回True,然后put 1,True打印1True,返回True.整个表达式评估为True,但不打印任何更多.

在第二种情况下,首先put 1评估,打印1和返回True,然后put 2评估,打印2和返回True.同样,整个表达式的计算结果为True,但不再打印任何内容.