在perl 6中是否有用于例程调用的中缀版本?

jjm*_*elo 6 functional-programming perl6

假设我想将一组函数应用于对象数组.像这样的东西:

my $a = sub ($) { $_ * 2 };
my $b = sub ($) { $_ / 2 };

my @funcs = ($a, $b);

my @ops = @funcs.roll(4);
Run Code Online (Sandbox Code Playgroud)

我可以

say  ^10 ».&» @ops; 
Run Code Online (Sandbox Code Playgroud)

但是.&是一个后缀运算符 ; >>同样的事情.但是,它可以用于单个功能.运用

say  ^10 Z. @ops; 
Run Code Online (Sandbox Code Playgroud)

.实际被调用的方法的缀运算符,产生大约误认为连接运算符出错.我认为我没有任何其他选择.任何的想法?

Bra*_*ert 6

你可以使用&infix:« o »/ &infix:« ? »运算符,结合lambda/closure工厂.

sub lambda-factory ( +in ) {
  in.map: -> \_ { ->{_} }
}

my @funcs = (
  * * 2,
  * / 2
);

(@funcs X? lambda-factory ^10)».()
# (0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5)

(@funcs «?» lambda-factory ^10)».()
# [0, 0.5, 4, 1.5, 8, 2.5, 12, 3.5, 16, 4.5]

( (|@funcs xx *) Z? lambda-factory ^10 )».()
# (0, 0.5, 4, 1.5, 8, 2.5, 12, 3.5, 16, 4.5)
Run Code Online (Sandbox Code Playgroud)