Raku 中的 xx 运算符如何能够延迟对其左侧代码操作数的评估?

cow*_*moo 10 raku

'xx' 运算符的有趣之处在于:

(^100).pick xx 10
Run Code Online (Sandbox Code Playgroud)

生成 10 个随机 Int 的列表,而不是一个随机 Int 作为列表重复 10 次。

编译器是否将运算符作为特殊情况处理?或者它真的只是另一个我们也可以定义自己的潜艇?(如果是这样,我很想知道如何......)

谢谢

Jon*_*ton 10

是的,这是当前在编译器中作为特殊形式存在的一系列运算符之一。其他示例包括||and &&,它仅根据左侧的布尔化来评估右侧。

目前,没有办法自己定义这样的操作符(或者至少,不是官方支持的操作符;如果准备修改编译器内部,一切皆有可能)。然而,宏 - 计划用于下一个主要的 Raku 语言版本 - 将启用此功能。