タグ付けされた質問 「raku」

Rakuプログラミング言語(旧称Perl 6)に関する質問。

2
変数によって参照されるトークンにパラメータを渡す方法は?
トークン名を直接使用することで、トークン署名を簡単に使用できます。 my token t ( $x ) { $x }; 'axb' ~~ / 'a' <t: 'x'> 'b' /; # match 'axb' ~~ / 'a' <t( 'x' )> 'b' /; # match ただし、トークンが変数に格納されている場合、これを行う方法が見つかりませんでした。 my $t = token ( $x ) { $x }; 'axb' ~~ / 'a' <$t: 'x'> 'b' /; …
10 raku 

1
多次元配列でRakuのパフォーマンスが低下するのはなぜですか?
Rakuが多次元配列の操作をそれほどうまく実行できないのはなぜでしょうか。Python、C#、Rakuで2次元マトリックスを初期化する簡単なテストを行ったところ、経過時間が驚くほど長くなりました。 楽のために my @grid[4000;4000] = [[0 xx 4000] xx 4000]; # Elapsed time 42 seconds !! Pythonの場合 table= [ [ 0 for i in range(4000) ] for j in range(4000) ] # Elapsed time 0.51 seconds C# int [,]matrix = new int[4000,4000]; //Just for mimic same behaviour for(int i=0;i<4000;i++) for(int …
10 performance  raku 

1
Duration.newがIntでは機能するがRatでは機能しないのはなぜですか?
持続時間について、なぜ私はラットを実数に強制する必要があるが、Intを強制する必要がないのですか? これは、Perl 6.dを実装するMoarVMバージョン2020.01.1に基づいて構築されたRakudoバージョン2020.01です。OSX。 say $v.WHAT; #(Int) $v = Duration.new( $v ); say $v; #20 my $w = 20.0; say $w.WHAT; #(Rat) $w = Duration.new( $w.Real ); say $w; #20 my $x = 20.0; say $x.WHAT; #(Rat) $x = Duration.new( $x ); say $x; #hangs
9 raku 

1
カスタム宣言子を作る
特定のボイラープレートのセットをかなり定期的に使用するとします。 class Foo { method abc($a: $b, $c, +@d) is pure { use Slang::Bar; … } method xyz($a: $b, $c, +@d) is pure { use Slang::Bar; … } method blarg($a: $b, $c, +@d) is pure { use Slang::Bar; … } } 私はむしろただ言うことができるほうがいいです: class Foo is/does Bar { bar abc { …
9 raku 

3
Rakuの別のスレッドでスローされたエラーを伝播およびキャッチするにはどうすればよいですか?
別のスレッド(たとえば、開始ブロック、Proc :: Async、またはこれらを含むサブルーチン)からエラーを伝播する最良の方法は何ですか。新しいスレッドをスピンオフするコードをtry / CATCHブロックで単にラップするだけでは機能せず、awaitの使用は、サブルーチンの戻り値に応じてのみ機能します(つまり、subがselfを返すと、awaitアプローチでは機能しません)。
9 raku 

1
2要素リストのリストをハッシュにする方法は?
私は、たとえばで取得するような2要素のリストのリストを持って(1..5) Z (20..24)います{1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}。これをハッシュにしたいのです(この例では、で取得したものです。「手動」で実行できますが、あまりにもエレガントではなく、Rakuには慣用的な方法があると私は確信しています。 my @a = (1..5) Z (20..24); my %a; for @a -> @x { %a{@x[0]} = @x[1];
9 raku 


1
Rakuでwc -lをエミュレートする方法
perl 5では、wc -lonelinerを使用してエミュレートできます。 perl -lnE 'END {say $.}' test.txt この機能をRakuに実装する方法 これを実装しようとすると: raku -e 'say "test.txt".IO.open.lines.elems' 遅くなり、多くのメモリを使用することが判明 複製のための情報: $ wget http://eforexcel.com/wp/wp-content/uploads/2017/07/1500000%20Sales%20Records.zip $ unzip "1500000 Sales Records.zip" $ mv "1500000 Sales Records.csv" part.txt $ for i in `seq 1 10`; do cat part.txt >> test.txt ; done $ du -sh test.txt 1.8G …
9 perl  raku 

1
Rakuの(任意の)アーティファクトなしでリストまたは配列から要素を削除する
私は、リスト/配列から項目を削除する方法を学ぶために楽ドキュメントといくつかの書籍&チュートリアルやいくつかのStackOverflowの記事を検索したきれいにせずに、すなわち(任意)削除された要素の代わりに、 my @s = <3 18 4 8 92 14 30>; my $item = 8; my $index = @s.first($item, :k); @s[$index]:delete; その結果、[3 18 4(Any)92 14 30]となるため、操作を実行できません[+]。たとえば、適用できません。 それなしのリストから項目を削除する方法/配列があります(任意)?
9 raku 

1
楽で約束をタイムアウトするにはどうすればよいですか?
私はをPromise一定の時間内に維持するようにスケジュールできることを知っています my $promise = Promise.in($seconds); しかし、どうすれば壊れるようにスケジュールできますか?具体的には、「タイムアウト」して、一定の時間が経過すると失敗するという約束を考えています。 私は次のPromiseように別のでこれを行うことができます: my $promise = Promise.new; ... Promise.in($seconds).then: { $promise.break }; しかし、これは少し...無駄に感じます。これを行うより良い方法はありますか?
9 promise  raku 

2
CATCHブロックでの例外と失敗の区別[RAKU]
失敗はCATCHブロックで処理できることがわかっています。 次の例では、「AdHoc」障害(other-sub内)を作成し、CATCHブロック(my-sub内)で例外を処理します。 sub my-sub { try { CATCH { when X::AdHoc { say 'AdHoc Exception handled here'; .resume } default {say 'Other Exception'; .resume} } my $b = other-sub(); $b.so ?? $b.say !! 'This was a Failure'.say; } } sub other-sub { fail 'Failure_X' } my-sub(); 出力は次のとおりです。 AdHoc Exception handled …

1
サブセットをRakuにエクスポートできますか?
いくつかのサブセットを定義し、それにいくつかの制約といくつdieかの有用なエラーメッセージのいくつかのステートメントも追加します。これらのサブセットを使用するモジュールの上部でそれらを定義するのではなく、それらを別のモジュールに配置し、完全修飾名(FQN)を使用しないようにします。たとえば、私は持っています unit module Long::Module::Subsets; subset PosInt where ($_ ~~ Int || "The value must be an integer") && ($_ > 0 || "The value must be greater than 0") is export ; # other subsets ... しかし得た ===SORRY!=== Error while compiling /tmp/637321813/main.pl6 Two terms in a row ... それが機能していないので、代わりに次のようにすることができると考えましたが、それを避けることができるかどうか疑問に思っています: use …
9 module  subset  raku 

3
Raku reblessは継承されたクラスでは機能しなくなりました
このスレッドで提供されたコードはもう機能しません。Perl6でオブジェクトをreblessするにはどうすればよいですか? 私は昨年このコードを書きましたが、それはうまくいきました。今はそうではありません: class Person { ; } class Woman is Person { ; } my $tom = Person.new; my $lisa = Woman.new; say $tom.^name; # -> Person say $lisa.^name; # -> Woman Metamodel::Primitives.rebless($tom, Woman); # -> New type Woman for Person is not a mixin type エラーメッセージは、継承されたクラスで動作するはずなので、意味がありません。少なくともそうだった。 ドキュメントは役に立ちません。https://docs.raku.org/routine/rebless
9 raku 

2
Rakuを使用してe番号を計算する
式を計算してe定数(別名オイラー数) を計算しようとしています 階乗と除算を一度に計算するために、私はこれを書きました: my @e = 1, { state $a=1; 1 / ($_ * $a++) } ... *; say reduce * + * , @e[^10]; しかし、うまくいきませんでした。それを正しく行う方法は?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.