perl6将运算符作为参数传递

时间:2017-10-15 18:36:11

标签: parameters arguments operators perl6

我试图通过定义和传递原始运算符来实现类似于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

有没有简单的方法来传递运算符和函数?

感谢。

1 个答案:

答案 0 :(得分:6)

我不做Scheme,但是

(define x +)

应该与

相对应
my constant &x = &infix:<+>;

然后,

say x(1,2)

也将输出3。

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

请注意,我并不完全确定您尝试使用Perl6代码做什么,因为它与Scheme代码段完全不同。