limitations

Einschränkungen des German-Moduls / German Module Limitations

English | Deutsch

English

Summary

This module provides German functions and operators for Raku, but cannot modify the fundamental language syntax due to current Raku limitations (issue #2404).

What Works

✅ Translated Functions

  • Over 200 functions translated to German

  • All math, string, list, I/O, file, date/time functions

  • Examples:

    sagen "Hallo!";                    # say "Hello!"
    my $summe = summe([1,2,3,4,5]);   # sum([1,2,3,4,5])
    my $text = großbuchstaben("hallo"); # uc("hello")

✅ Custom Operators

  • Arithmetic: plus, minus, mal, geteilt, mod, hoch

  • Comparison: gleich, ungleich, größer, kleiner, größer_gleich, kleiner_gleich

  • Logical: und, oder, nicht

  • String: verknüpfen, wiederholen_text

  • Range: bis_, vor

  • Assignment: plus_gleich, minus_gleich, mal_gleich, geteilt_gleich

Important Note: Operators require parentheses for precedence:

# Correct
my $ergebnis = (5 plus 3 mal 2);        # (5+3)*2 = 16
my $ergebnis = (5 plus (3 mal 2));      # 5+(3*2) = 11

# In conditions
if ($alter größer_gleich 18) { ... }

✅ Constants

wahr          # True
falsch        # False
nichts        # Nil
unendlich     # Inf
keine_zahl    # NaN
pi            # 3.14159...
eulersche_zahl # 2.71828...

What Does NOT Work

❌ Language Keywords

Cannot translate control structures:

# Does NOT work:
wenn ($x > 5) { ... }            # if
während ($x < 10) { ... }        # while
für @liste { ... }               # for

# Must use original:
if ($x > 5) { ... }
while ($x < 10) { ... }
for @liste { ... }

❌ Variable Declaration

# Does NOT work:
mein $variable = 5;              # my
unser $gemeinsam = 10;           # our

# Must use:
my $variable = 5;
our $gemeinsam = 10;

❌ Class and Method Syntax

# Does NOT work:
klasse MeineKlasse { ... }       # class
methode foo() { ... }            # method

# Must use:
class MeineKlasse { ... }
method foo() { ... }

Technical Reason

Rakudo (Raku's implementation) has issue #2404 preventing modules from fully modifying the language grammar. Slangs currently cannot:

  1. Change reserved keywords

  2. Modify declaration syntax

  3. Alter core control structures

However, they CAN:

  • Define new functions

  • Create custom operators

  • Export symbols to namespace

Workarounds

For Control Structures

Use provided functions with blocks:

# Instead of if/while syntax
wenn($x > 5, { sagen "Größer" }, { sagen "Kleiner oder gleich" });

während({ $x < 10 }, { 
    sagen $x;
    $x++;
});

für([1,2,3,4,5], -> $n {
    sagen "Nummer: $n";
});

For Better Readability

Use German comments:

# Wenn der Benutzer volljährig ist
if ($alter größer_gleich 18) {
    sagen "Kann wählen";
}

# Für jeden Schüler in der Liste
for @schüler -> $schüler {
    sagen "Verarbeite: $schüler";
}

Deutsch

Zusammenfassung

Dieses Modul bietet deutsche Funktionen und Operatoren für Raku, kann aber aufgrund aktueller Raku-Einschränkungen (Problem #2404) die grundlegende Sprachsyntax nicht ändern.

Was funktioniert

✅ Übersetzte Funktionen

  • Über 200 ins Deutsche übersetzte Funktionen

  • Alle mathematischen, Zeichenketten-, Listen-, E/A-, Datei- und Datum/Zeit-Funktionen

  • Beispiele:

    sagen "Hallo!";                    # say "Hello!"
    my $summe = summe([1,2,3,4,5]);   # sum([1,2,3,4,5])
    my $text = großbuchstaben("hallo"); # uc("hello")

✅ Benutzerdefinierte Operatoren

  • Arithmetisch: plus, minus, mal, geteilt, mod, hoch

  • Vergleich: gleich, ungleich, größer, kleiner, größer_gleich, kleiner_gleich

  • Logisch: und, oder, nicht

  • Zeichenkette: verknüpfen, wiederholen_text

  • Bereich: bis_, vor

  • Zuweisung: plus_gleich, minus_gleich, mal_gleich, geteilt_gleich

Wichtiger Hinweis: Operatoren benötigen Klammern für die Vorrangigkeit:

# Richtig
my $ergebnis = (5 plus 3 mal 2);        # (5+3)*2 = 16
my $ergebnis = (5 plus (3 mal 2));      # 5+(3*2) = 11

# In Bedingungen
if ($alter größer_gleich 18) { ... }

✅ Konstanten

wahr          # True
falsch        # False
nichts        # Nil
unendlich     # Inf
keine_zahl    # NaN
pi            # 3.14159...
eulersche_zahl # 2.71828...

Was NICHT funktioniert

❌ Sprachschlüsselwörter

Kontrollstrukturen können nicht übersetzt werden:

# Funktioniert NICHT:
wenn ($x > 5) { ... }            # if
während ($x < 10) { ... }        # while
für @liste { ... }               # for

# Muss das Original verwenden:
if ($x > 5) { ... }
while ($x < 10) { ... }
for @liste { ... }

❌ Variablendeklaration

# Funktioniert NICHT:
mein $variable = 5;              # my
unser $gemeinsam = 10;           # our

# Muss verwenden:
my $variable = 5;
our $gemeinsam = 10;

❌ Klassen- und Methodensyntax

# Funktioniert NICHT:
klasse MeineKlasse { ... }       # class
methode foo() { ... }            # method

# Muss verwenden:
class MeineKlasse { ... }
method foo() { ... }

Technischer Grund

Rakudo (die Raku-Implementierung) hat das Problem #2404, das Module daran hindert, die Sprachgrammatik vollständig zu ändern. Slangs können derzeit nicht:

  1. Reservierte Schlüsselwörter ändern

  2. Deklarationssyntax modifizieren

  3. Kern-Kontrollstrukturen verändern

Sie KÖNNEN jedoch:

  • Neue Funktionen definieren

  • Benutzerdefinierte Operatoren erstellen

  • Symbole in den Namespace exportieren

Workarounds

Für Kontrollstrukturen

Verwenden Sie die bereitgestellten Funktionen mit Blöcken:

# Anstelle der if/while-Syntax
wenn($x > 5, { sagen "Größer" }, { sagen "Kleiner oder gleich" });

während({ $x < 10 }, { 
    sagen $x;
    $x++;
});

für([1,2,3,4,5], -> $n {
    sagen "Nummer: $n";
});

Für bessere Lesbarkeit

Verwenden Sie deutsche Kommentare:

# Wenn der Benutzer volljährig ist
if ($alter größer_gleich 18) {
    sagen "Kann wählen";
}

# Für jeden Schüler in der Liste
for @schüler -> $schüler {
    sagen "Verarbeite: $schüler";
}

Zukünftiger Status

Wenn das Rakudo-Problem #2404 gelöst wird, wird es möglich sein:

  • Alle Schlüsselwörter zu übersetzen

  • Eine vollständig deutsche Syntax zu erstellen

  • Die Sprachgrammatik zu modifizieren

Derzeit bietet dieses Modul die maximal mögliche Funktionalität innerhalb der aktuellen Einschränkungen.

Empfehlung

Für Bildungs- oder Lernprojekte ist dieses Modul hervorragend geeignet für:

  • Programmierunterricht für deutschsprachige Lernende

  • Demonstration von Konzepten ohne Sprachbarriere

  • Erstellung zugänglicherer Beispiele

Für Produktionsprojekte sollten Sie erwägen:

  • Deutsche Kommentare mit englischem Code zu verwenden

  • Umfassende Dokumentation auf Deutsch

  • Hilfsfunktionen mit beschreibenden deutschen Namen zu erstellen

German v0.0.3

German language programming for Raku - Deutsche Sprachunterstützung für Raku

Authors

  • Danslav Slavenskoj

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Deutsch
  • German

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.