====== Funktionsglossar — alle std-Funktionen alphabetisch ======
Jede öffentliche Funktion der Standardbibliothek, nach Namen sortiert, mit Signatur und der Unit, in der sie steht. **7128 Funktionen aus 433 Units** — der Bestand von ''std'', ohne Umweg über die Unit-Seiten.
Wofür das gut ist: Man hat einen Funktionsnamen aus fremdem Code, einer Fehlermeldung oder einem Beispiel und will wissen, wo er herkommt und wie er aufgerufen wird. Die Unit-Seiten beantworten die umgekehrte Frage — was kann diese Unit — und stehen dahinter verlinkt.
→ [[lyx_-_programmiersprache:units|Unit-Verzeichnis]] · [[lyx_-_programmiersprache:sprache:syntax|Sprachsyntax]] · [[lyx_-_programmiersprache:units:glossar:a|Glossar von vorn]]
----
===== Nach Anfangsbuchstaben =====
^ Buchstabe ^ Funktionen ^
| [[lyx_-_programmiersprache:units:glossar:sonstige|Sonstige]] | 43 |
| [[lyx_-_programmiersprache:units:glossar:a|A]] | 632 |
| [[lyx_-_programmiersprache:units:glossar:b|B]] | 283 |
| [[lyx_-_programmiersprache:units:glossar:c|C]] | 335 |
| [[lyx_-_programmiersprache:units:glossar:d|D]] | 416 |
| [[lyx_-_programmiersprache:units:glossar:e|E]] | 378 |
| [[lyx_-_programmiersprache:units:glossar:f|F]] | 223 |
| [[lyx_-_programmiersprache:units:glossar:g|G]] | 466 |
| [[lyx_-_programmiersprache:units:glossar:h|H]] | 160 |
| [[lyx_-_programmiersprache:units:glossar:i|I]] | 276 |
| [[lyx_-_programmiersprache:units:glossar:j|J]] | 22 |
| [[lyx_-_programmiersprache:units:glossar:k|K]] | 86 |
| [[lyx_-_programmiersprache:units:glossar:l|L]] | 223 |
| [[lyx_-_programmiersprache:units:glossar:m|M]] | 361 |
| [[lyx_-_programmiersprache:units:glossar:n|N]] | 99 |
| [[lyx_-_programmiersprache:units:glossar:o|O]] | 43 |
| [[lyx_-_programmiersprache:units:glossar:p|P]] | 804 |
| [[lyx_-_programmiersprache:units:glossar:q|Q]] | 300 |
| [[lyx_-_programmiersprache:units:glossar:r|R]] | 322 |
| [[lyx_-_programmiersprache:units:glossar:s|S]] | 822 |
| [[lyx_-_programmiersprache:units:glossar:t|T]] | 230 |
| [[lyx_-_programmiersprache:units:glossar:u|U]] | 204 |
| [[lyx_-_programmiersprache:units:glossar:v|V]] | 219 |
| [[lyx_-_programmiersprache:units:glossar:w|W]] | 93 |
| [[lyx_-_programmiersprache:units:glossar:x|X]] | 25 |
| [[lyx_-_programmiersprache:units:glossar:y|Y]] | 2 |
| [[lyx_-_programmiersprache:units:glossar:z|Z]] | 79 |
[[lyx_-_programmiersprache:units:glossar:sonstige|#]] · [[lyx_-_programmiersprache:units:glossar:a|A]] · [[lyx_-_programmiersprache:units:glossar:b|B]] · [[lyx_-_programmiersprache:units:glossar:c|C]] · [[lyx_-_programmiersprache:units:glossar:d|D]] · [[lyx_-_programmiersprache:units:glossar:e|E]] · [[lyx_-_programmiersprache:units:glossar:f|F]] · [[lyx_-_programmiersprache:units:glossar:g|G]] · [[lyx_-_programmiersprache:units:glossar:h|H]] · [[lyx_-_programmiersprache:units:glossar:i|I]] · [[lyx_-_programmiersprache:units:glossar:j|J]] · [[lyx_-_programmiersprache:units:glossar:k|K]] · [[lyx_-_programmiersprache:units:glossar:l|L]] · [[lyx_-_programmiersprache:units:glossar:m|M]] · [[lyx_-_programmiersprache:units:glossar:n|N]] · [[lyx_-_programmiersprache:units:glossar:o|O]] · [[lyx_-_programmiersprache:units:glossar:p|P]] · [[lyx_-_programmiersprache:units:glossar:q|Q]] · [[lyx_-_programmiersprache:units:glossar:r|R]] · [[lyx_-_programmiersprache:units:glossar:s|S]] · [[lyx_-_programmiersprache:units:glossar:t|T]] · [[lyx_-_programmiersprache:units:glossar:u|U]] · [[lyx_-_programmiersprache:units:glossar:v|V]] · [[lyx_-_programmiersprache:units:glossar:w|W]] · [[lyx_-_programmiersprache:units:glossar:x|X]] · [[lyx_-_programmiersprache:units:glossar:y|Y]] · [[lyx_-_programmiersprache:units:glossar:z|Z]]
----
===== Builtins — die Namen, die hier nicht stehen =====
Ein Teil der meistbenutzten Namen taucht im Glossar **nicht** auf, weil sie keine Unit-Funktionen sind, sondern **Builtins**: der Übersetzer erzeugt den Code direkt, es gibt keinen ''pub fn'' dazu und keinen Import. Wer ''PrintLn'' im Glossar sucht, findet nichts — deshalb steht die Liste hier:
* ''EPrint''
* ''EPrintLn''
* ''EPrintStr''
* ''EPrintStrLn''
* ''Exit''
* ''fCeil''
* ''fFloor''
* ''FileReadAll''
* ''fRound''
* ''GetArg''
* ''GetArgC''
* ''GetArgV''
* ''GetEnvBlock''
* ''IntToStr''
* ''panic''
* ''Printf''
* ''PrintFloat''
* ''PrintInt''
* ''PrintLn''
* ''PrintStr''
* ''Random''
* ''RandomSeed''
* ''StrConcat''
* ''StrCopy''
* ''StrEq''
* ''StrEquals''
* ''StrFromInt''
* ''StrLen''
* ''StrLength''
* ''StrStartsWith''
* ''StrSub''
Die vollständige Belegung führt der Compiler in ''src/backend/_builtin_ids.md''; die Liste oben ist der Teil, den man beim Programmieren tatsächlich schreibt. Nicht aufgeführt sind die ''sys_*''-Builtins (direkte Syscall-Abbildungen, vor allem für [[lyxos:start|LyxOS]]) und die Speicherbarrieren.
> **Fünf Namen gibt es doppelt** — als Builtin **und** als Unit-Funktion: ''Print'' und ''FloatToStr'' (auch in ''std.io''), ''StrFind'' und ''StrTrim'' (auch in ''std.string''), ''FileSize'' (auch in ''std.fs'' und ''std.fs_ext''). Ohne Import greift das Builtin; mit Import entscheidet der Übersetzer zugunsten der Unit-Funktion. Bei diesen fünf lohnt der Blick auf die Unit-Seite, weil die Signaturen nicht zwingend gleich sind.
>
> Genau diese Doppelung hat außerdem eine Lücke in der Stelligkeitsprüfung: ein Name, den es als Builtin **und** als ''pub fn'' gibt, entkommt beiden Prüfungen — ''%%PrintLn("a", "b")%%'' wird übersetzt, obwohl ''PrintLn'' ein Argument nimmt ([[https://github.com/SEOLizer/LyX-Compiler/issues/2012|#2012]], offen).
===== Was in diesem Glossar steht — und was nicht =====
* Aufgenommen ist, was mit ''pub fn'' aus einer Unit herausgeführt wird. Alles Interne fehlt, und das mit Absicht: was nicht ''pub'' ist, darf sich ändern.
* Die Signatur steht so da, wie sie im Quelltext steht. Bei mehrzeiligen Signaturen sind die Zeilen zusammengezogen.
* Ein Name kann **mehrfach** vorkommen. ''SqrtF64'' etwa steht in ''std.math'' und noch einmal in ''std.ml''; ''IsValid'' gibt es in vier Units. Beim Import entscheidet, welche Unit eingebunden ist.
* Die Unit-Spalte verweist auf die Doku-Seite der Unit, sofern es eine gibt. Für die Untermodule von ''std.cloud.digitalocean'' und die Unicode-Datentabellen führt der Verweis auf keine eigene Seite — die stehen als reiner Text da.
* Beschreibungen stehen bewusst nicht hier, sondern auf den Unit-Seiten. Ein Glossar mit 7146 Kurztexten wäre weder pflegbar noch lesbar; die Seite beantwortet die Frage //wo//, nicht die Frage //wie//.
> **Erzeugt aus dem Quelltext, nicht von Hand gepflegt.** Grundlage ist der Bestand aller ''pub fn'' in ''std''. Fehlt eine Funktion hier, fehlt sie auch dort — oder sie ist nicht öffentlich.
>
> Die Buchstabenseiten entstehen aus ''glossar-bauen.py'' im Doku-Projekt. **Kommen neue Funktionen oder Units hinzu, wird das Glossar im selben Arbeitsgang mitgezogen** — ein Glossar, das dem Bestand hinterherhinkt, ist schlechter als keines, weil es Vollständigkeit behauptet.