-
5つのユニークなRaku機能
- Rakuは、さまざまな言語機能を実験するための実験室のようなもの。複数の並行性モデルと多様な機能を備え、それぞれの機能が相互作用する方法が独特。
-
Junctions
- Junctionsは、取り得る値の重なりを表し、論理式を表現するために使われる。
- すべての値に対して演算を適用し、booleanに変換して利用する。
- Rakuはjunctionsによって量化子をエレガントに表現する。
-
Whatevers
*は"whatever"記号で、さまざまな役割を果たす。
- 範囲やシーケンスでは"unbound"を意味し、無名関数へ変換される。
- 多くのRakuメソッドは関数を受け取るようオーバーロードされており、有用。
-
正規表現
- Rakuは、従来のPOSIXおよびPerl互換正規表現とは異なる新しい構文を提供する。
- 正規表現を組み合わせて、より単純で読みやすい部分へ分割できる。
- 構文解析文法を基本言語機能としてサポートする。
-
Hyperoperators
l>>.methodは基本的にmapに似ており、下位リストまで再帰的に降りていく。
- 二項ハイパー演算子は、2つのリストに対して要素ごとに演算を適用する。
- 複数入力に対して同じ式を実行するのに便利。
-
Pair Syntax
- Rakuのハッシュは
key => valueのペアで構成され、"colon syntax"によって簡潔にペアを指定できる。
:keyと:!keyは、それぞれkey => Trueとkey => Falseに対応する。
- メソッド設定を非常に簡潔に記述できる。
-
次世代の実験室: SlangsとRakuAST
- SlangsはRakuの構文を変更する機能で、ループ構文の変更や識別子の変更などを可能にする。
- RakuASTは、すべてのRaku式をRaku内部でASTとしてパースできるようにする。
-
ボーナス実験
- Rakuは、"Rakudo Star"のインストールを通じて、あらかじめ導入されたサードパーティモジュール群を提供する。
- これは、大きな標準ライブラリの保守負担と、ユーザーが適切なパッケージを探す負担との間にある優れた折衷案。
-
ブログのおすすめ
- Elizabeth MattijsenとCodesectionsのブログは、Raku内部に関する多くの情報を提供する。
- Raku Advent Calendarは、高度なRaku技術に関する優れた資料。
1件のコメント
Hacker Newsの意見
JavaScriptで独自に実装した構成的正規表現機能を紹介しており、これは複数のプロジェクトで頻繁に使われるライブラリとのこと。この機能によって、言語内で一級のパーサーを使っている感覚に少し近づくとしている。例として、メディアタイプ解析を実装した事例を共有している
templated-regular-expressionは npm と GitHub で確認できるRaku のコードベースを保守する前に業界を去りたい、という意見がある
Raku の速度問題は依然として解決されておらず、最新の Raku は Python 3.13 よりログファイルの解析に 6.5 倍長くかかる
Raku の主な機能は CLI と文法にある
Hyper は再帰スキームのよりアドホックな版のように見え、Scala の _ に似ている。ラムダのために Scala を愛しており、すべての言語が同様のものを採用すべきだと考えている
(2, 30, 4, 50).map(* + *)が(32, 45)を返すが、(32, 54)を返すべきなのではないかという疑問が出ている。これは一部の国における数字の表現方法の違いによる可能性があるPerl は今や APL 系言語への入り口の役割を果たしているのではないか、という意見がある
(2,4,8...*)[17]が 262144 を返すことに驚きを示しているRaku を実運用で使っており、テキスト処理には最適な言語だと考えている。パーサーの構築が非常に優れており、LLM のテキストパイプラインを作るのに最適な言語になっていないのが不思議だとしている
このプロジェクトを長年見守ってきており、興味深いものの、Perl 6 がこのプロジェクトによって大きく妨げられた点は残念だとしている