2017-10-15 242 views
2

我正在试图通过定义和传递原始操作符来实现类似于Scheme的一些功能。在方案中,您可以perl6传递操作符作为参数

(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 

有一个简单的方法来传递操作符和函数?

谢谢。

回答

6

我不做计划,但

(define x +) 

应与类似

my constant &x = &infix:<+>; 

然后,

say x(1,2) 

将输出3为好。

如果您发现上面使用的规范名称太繁琐,还有一个用于传递操作符的简写符号&[+]

请注意,我并不完全确定您要如何处理您的Perl6代码,因为它看起来与Scheme代码片段有所不同。

+0

谢谢Christoph! “常量”和“&[+]”对我来说都是新概念。我今天学到了东西!谢谢 !! – lisprogtor