gpt4 book ai didi

raku - 像函数一样传递运算符

转载 作者:行者123 更新时间:2023-12-03 07:34:33 25 4
gpt4 key购买 nike

在学习Raku时,我到达了高阶函数和排序函数的地步。
我有这个例子:

> sort <4 6 2 9 1 5 11>
(1 2 4 5 6 9 11)
然后例程的文档说:
Sorts the list, smallest element first. By default infix:<cmp>  is used for
comparing list elements.
在9.2节中我遵循 "Piensa en raku"的书中,比较了数字排序和字典排序。
我尝试了以下方法:
> sort &le, <4 6 2 9 1 5 11>;
===SORRY!=== Error while compiling:
Undeclared routine:
le used at line 1. Did you mean 'lc'?
但是得到这个问题,而不是按字典顺序排序的列表。因此,对于我来说理解这可能还为时过早,但是应该可以像函数一样在Raku中传递一个运算符,因为文档也指出它正在使用中缀:或者我需要执行以下操作,也许我m令人困惑的运算符和子例程:
sub my-le($a,$b) {
$a le $b;
}

sort &my-le, <4 6 2 9 1 5 11>;
或这个:
   sort { $^b le $^a  }, <4 6 2 9 1 5 11>;
因此,我有一个问题,涉及不同的使用infix运算符和一个子例程,也许有关此差异的问题是操作数的顺序会影响某些操作的结果。因此您不能轻易将其作为函数,参数或变量使用
> sort { $^a le $^b  }, <4 6 2 9 1 5 11>
(9 6 5 4 2 11 1)
> sort { $^b le $^a }, <4 6 2 9 1 5 11>
(1 11 2 4 5 6 9)
我希望我能解释我对这个问题的怀疑。

最佳答案

le运算符定义如下:

sub infix:<le> { ... }
infix:前缀告诉语言它是一个中缀运算符。因此,如果您要调用的是其 &infix:<le>(1,2)的子项或用于您的排序:
sort &infix:<le>, <4 6 2 9 1 5 11>;
(9 6 5 4 2 11 1)
这可能对 https://docs.raku.org/language/optut有帮助

关于raku - 像函数一样传递运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64332644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com