1 Punkte von GN⁺ 2024-11-14 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2024-11-14
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-expression ist auf npm und GitHub zu finden
    • Programmiersprachen sollten echte Parser haben und keine regulären Ausdrücke als Parser verwenden. Wenn man jedoch reguläre Ausdrücke verwendet, ist es besser, sie in kleine Teile aufzuteilen
  • Es 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

    • Die CLI ist eine allgemeine Funktion und in Raku integriert, wodurch sie angenehm zu verwenden ist
    • Grammatik wird in Programmiersprachen selten als "First-Class Citizen" behandelt und bietet die Möglichkeit, mit objektorientierter Programmierung Grammatiken zu erzeugen
  • 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 sollten

  • Es 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 liegen

  • Es 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] 262144 zurückgibt

  • Raku 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