Inhaltsverzeichnis

Lyx – Standard Library & Units

In Lyx wird zwischen Builtins (direkt im Compiler-Kern enthalten) und Standard-Units (in .lyx-Dateien definiert) unterschieden. Alle Funktionen folgen nun konsequent der PascalCase-Schreibweise.


1) Builtins (Global verfügbar)

Builtins benötigen keinen Import. Sie werden vom Backend direkt in effiziente Syscalls oder spezialisierte Inline-Assembler-Routinen übersetzt.


I/O & System (io.lyx)

Funktion Signatur Beschreibung
Exit `(code: int64): void` Beendet das Programm mit dem angegebenen Statuscode.
PrintStr `(s: pchar): void` Gibt einen nullterminierten String (C-Style) auf STDOUT aus.
PrintInt `(x: int64): void` Wandelt eine Ganzzahl in ASCII um und gibt sie aus.
PrintFloat `(x: f64): void` Gibt eine Fließkommazahl (f64) aus.

Mathematik & Zufall (math.lyx)

Funktion Signatur Beschreibung
Abs `(x: int64): int64` Liefert den absoluten Wert (Betrag) einer Ganzzahl.
Sqrt `(x: f64): f64` Berechnet die Quadratwurzel (nutzt native FPU/SSE Instruktion).
Random `(): int64` Liefert eine Pseudo-Zufallszahl ($0$ bis $2{31}-1$).
RandomSeed `(seed: int64): void` Initialisiert den Zufallsgenerator (LCG) mit einem Startwert.

2) Standard Units (Erfordert Import)

Unit: std.Math

Import: `import std.Math;`

Unit: std.String

Import: `import std.String;`


3) Design-Richtlinie: Benennung (PascalCase)

Um die Konsistenz innerhalb des Ökosystems zu wahren, nutzt Lyx ab v0.1.7 folgende Konventionen:

Element Stil Beispiel
Funktionen / Methoden PascalCase `PrintStr`, `Create`, `Factorial`
Typen / Klassen PascalCase `TPlayer`, `Int64`, `Node`
Variablen / Parameter camelCase `counter`, `newName`, `resultValue`
Konstanten UPPER_CASE `MAX_LIMIT`, `PI`, `BUFFER_SIZE`
Keywords lowercase `fn`, `var`, `class`, `if`, `let`

4) Code-Beispiel: PascalCase in Aktion

Dieses Beispiel zeigt die Integration von Builtins und Unit-Funktionen unter Einhaltung der Benennungsrichtlinien:

unit MyApp;
 
import std.Math;
 
fn Main(): int64 {
    let input: int64 := -42;
    var result: int64 := Abs(input); // Nutzung eines Builtins
 
    // Nutzung einer Funktion aus std.Math
    if (IsEven(result)) {
        PrintStr("Die Zahl ");
        PrintInt(result);
        PrintStr(" ist gerade.");
    }
 
    return 0;
}