perl6 将运算符作为参数传递
perl6 Passing operators as arguments
我试图通过定义和传递原始运算符来实现一些类似于 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,但是
(define x +)
应该对应于
my constant &x = &infix:<+>;
然后,
say x(1,2)
也会输出3。
还有一个 shorthand 符号 &[+]
用于传递运算符,如果您发现上面使用的规范名称太麻烦的话。
请注意,我不完全确定您尝试使用 Perl6 代码做什么,因为它看起来与 Scheme 代码段有很大不同。
我试图通过定义和传递原始运算符来实现一些类似于 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,但是
(define x +)
应该对应于
my constant &x = &infix:<+>;
然后,
say x(1,2)
也会输出3。
还有一个 shorthand 符号 &[+]
用于传递运算符,如果您发现上面使用的规范名称太麻烦的话。
请注意,我不完全确定您尝试使用 Perl6 代码做什么,因为它看起来与 Scheme 代码段有很大不同。