2017-10-15 4 views
2

生の演算子を定義して渡すことによって、Schemeと同様の機能を実現しようとしています。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 +) (x 1 2) 

と、この操作は、私が何とか同じことを達成するために、別の関数にオペレータを配置する必要があり、あなたはPerl6の3.に答える与えることができます演算子と関数を渡す簡単な方法は?

ありがとうございました。

答えて

6

私はスキームを行いませんが、

(define x +) 

は、同様にその後

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

say x(1,2) 

意志出力3のようなものに対応している必要があります。

上記で使用されている正規名があまりにも扱いにくい場合は、演算子を渡すための簡略表記&[+]もあります。

Perl6コードで何をしようとしていたかは、Schemeスニペットとはかなり違うので、私は完全にはわかりません。

+0

ありがとうChristoph !! "定数"と "&[+]"はどちらも新しい概念です。私は今日何かを学んだ!ありがとうございました !! – lisprogtor

関連する問題