-
Fünf ungewöhnliche Raku-Funktionen
- Raku ist wie ein Labor zum Experimentieren mit verschiedenen Sprachfunktionen. Es bietet mehrere Nebenläufigkeitsmodelle und vielfältige Features, und die Art, wie diese Funktionen zusammenspielen, ist einzigartig.
-
Junctions
- Junctions stellen eine Menge möglicher Werte dar und werden verwendet, um logische Ausdrücke zu formulieren.
- Operationen werden auf alle Werte angewendet und anschließend über eine Umwandlung in Boolean verwendet.
- Mit Junctions kann Raku Quantoren elegant ausdrücken.
-
Whatevers
* ist das „whatever“-Symbol und übernimmt verschiedene Rollen.
- In Bereichen oder Sequenzen bedeutet es „unbound“ und wird in eine anonyme Funktion umgewandelt.
- Viele Raku-Methoden sind so überladen, dass sie Funktionen annehmen, was sie besonders nützlich macht.
-
Reguläre Ausdrücke
- Raku bietet eine neue Syntax, die sich von traditionellen POSIX- und Perl-kompatiblen regulären Ausdrücken unterscheidet.
- Reguläre Ausdrücke lassen sich kombinieren und in einfachere, besser lesbare Teile zerlegen.
- Parsing-Grammatiken werden als Sprachfunktion direkt unterstützt.
-
Hyperoperators
l>>.method ähnelt im Wesentlichen map, steigt aber rekursiv auch in Unterlisten hinab.
- Binäre Hyperoperatoren wenden Operationen elementweise auf zwei Listen an.
- Das ist nützlich, um dieselbe Formel auf mehrere Eingaben anzuwenden.
-
Pair Syntax
- Hashes in Raku bestehen aus
key => value-Paaren, und mit der „colon syntax“ lassen sich Paare kompakt angeben.
:key und :!key entsprechen jeweils key => True und key => False.
- Dadurch lassen sich Methodeneinstellungen sehr knapp formulieren.
-
Das Labor der nächsten Generation: Slangs und RakuAST
- Slangs ermöglichen es, die Raku-Syntax zu verändern, etwa durch Anpassung von Schleifensyntax oder Umbenennung von Bezeichnern.
- RakuAST ermöglicht es, alle Raku-Ausdrücke innerhalb von Raku selbst als AST zu parsen.
-
Bonus-Experiment
- Über die Installation „Rakudo Star“ bietet Raku ein vorinstalliertes Set von Third-Party-Modulen.
- Das ist ein hervorragender Kompromiss zwischen dem Wartungsaufwand einer großen Standardbibliothek und dem Aufwand für Nutzer, passende Pakete zu finden.
-
Blog-Empfehlungen
- Die Blogs von Elizabeth Mattijsen und Codesections bieten viele Informationen über das Innenleben von Raku.
- Der Raku Advent Calendar ist eine hervorragende Quelle für fortgeschrittene Raku-Techniken.
1 Kommentare
Hacker-News-Kommentare
Es wird eine unabhängig in JavaScript implementierte Funktion für komponierbare reguläre Ausdrücke vorgestellt, eine Bibliothek, die in mehreren Projekten häufig verwendet wird. Diese Funktion bringt das Gefühl, First-Class-Parser in der Sprache zu haben, ein Stück näher. Als Beispiel wird eine Implementierung zum Parsen von Medientypen geteilt
templated-regular-expressionist auf npm und GitHub zu findenEs gibt die Meinung, man würde lieber die Branche verlassen, bevor man eine Raku-Codebasis warten müsste
Das Geschwindigkeitsproblem von Raku ist weiterhin ungelöst, und aktuelles Raku braucht zum Parsen von Logdateien immer noch 6,5-mal länger als Python 3.13
Die Hauptfunktionen von Raku sind die CLI und die Grammatik
Hyper wirkt wie eine eher ad-hocartige Version von Recursion Schemes und ist ähnlich wie
_in Scala. Es wird gesagt, man liebe Scala wegen Lambdas und finde, dass alle Sprachen etwas Ähnliches übernehmen solltenEs wird die Frage aufgeworfen, warum
(2, 30, 4, 50).map(* + *)(32, 45)zurückgibt, ob es nicht(32, 54)zurückgeben sollte. Das könnte an Unterschieden in der Zahlendarstellung in manchen Ländern liegenEs gibt die Ansicht, dass Perl nun als Einstieg in die Sprachfamilie von APL dient
Es wird Überraschung darüber geäußert, dass
(2,4,8...*)[17]262144zurückgibtRaku wird in der Praxis eingesetzt und als die beste Sprache für Textverarbeitung angesehen. Parser zu bauen sei hervorragend, und es sei überraschend, dass es nicht die optimale Sprache für den Aufbau von LLM-Text-Pipelines ist
Man habe dieses Projekt lange beobachtet; es sei interessant, aber bedauerlich, dass Perl 6 durch dieses Projekt stark behindert wurde