Parameters perl6将运算符作为参数传递

Parameters perl6将运算符作为参数传递,parameters,arguments,operators,raku,Parameters,Arguments,Operators,Raku,我试图通过定义和传递原始运算符来实现一些类似于Scheme的功能。在Scheme中,您可以 (define x +) (x 1 2) 这个操作会给你答案3。在perl6中,我必须以某种方式将运算符置于另一个函数中,以实现相同的效果: sub x($a) { $a * 2; } sub y($m, $n) { $m($n); } say y(&x, 3); # gives you 6 say y(+, 3) # this is error 是否有一种简单的方法来传递运算符和函数 谢谢。

我试图通过定义和传递原始运算符来实现一些类似于Scheme的功能。在Scheme中,您可以

(define x +) (x 1 2)
这个操作会给你答案3。在perl6中,我必须以某种方式将运算符置于另一个函数中,以实现相同的效果:

sub x($a) { $a * 2; }
sub y($m, $n) { $m($n); }
say y(&x, 3); # gives you 6
say y(+, 3) # this is error
是否有一种简单的方法来传递运算符和函数

谢谢。

我不做计划,但是

(define x +)
应该对应于

my constant &x = &infix:<+>;
也将输出3

如果您发现上面使用的规范名称过于繁琐,还可以使用简写符号
&[+]
来传递运算符

请注意,我不完全确定您想用Perl6代码做什么,因为这看起来与Scheme代码片段大不相同。

谢谢您,Christoph!!“常量”和“&[+]”对我来说都是新概念。我今天学到了一些东西!非常感谢。
say x(1,2)