Wikifunctions:Reservierte ZIDs
- Das Wiki der Funktionen lädt derzeit ein paar statische ZObjekte beim Setup. Davon werden wir mit der Zeit noch ein paar mehr brauchen.
Auf dieser Seite geht es um die lustige triviale Diskussion darüber, wie viele ZIDs wir reservieren sollten, ob sie zusammenhängend sein müssen und was diese ersten ZIDs sein sollten. Dies kann auch ein Platz zur Anlage von Eastereggs sein, eine Funktion, die sich in Wikidata als ziemlich beliebt erwiesen hat.
Beachte, dass wir zur Vereinfachung der Diskussion derzeit nicht über die zukünftige Möglichkeit nachdenken, föderierte Instanzen der Software zu haben, mit der das Wiki der Funktionen läuft, und wie das funktionieren wird. Wir überlegen lediglich, welche ZIDs für das Wiki der Funktionen selbst reserviert werden sollen.
Sollen die reservierten ZIDs zusammenhängend sein?
Ja.
Es ist schlicht einfach, zu sagen „alle ZIDs mit 4 Ziffern oder weniger sind reserviert“.
Es gibt auch das hybride Modell, alle ZIDs unterhalb einer bestimmten Zahl zu reservieren und zusätzlich einige höhere ZIDs für Eastereggs oder aus bestimmten Gründe zu reservieren (das hat Wikidata gemacht).
Wie viele ZIDs sollen wir reservieren?
Lass uns alle ZIDs mit vier Ziffern oder weniger reservieren.
Alle Kernobjekte würden sich unter den ZIDs mit drei Ziffern und weniger befinden und wir behalten die vierstelligen ZIDs für Sprachen.
Dies folgt ungefähr den Vorschlägen, die von Mitgliedern der Gemeinschaft auf der Diskussionsseite und im Phabricator gemacht wurden. Insbesondere werden wir den Platz nicht überfüllen.
Aktuell reservierte ZIDs
Siehe Wikifunctions:Reserved ZIDs/all für eine Liste aller aktuellen vordefinierten Objekte.
Bereiche
Wir reservieren bestimmte Bereiche für bestimmte Arten von vordefinierten Objekten.
Z1
–Z99
: Kerntypen. (Siehe § Kerntypen unten.)Z100
–Z199
: Prüfer für die Kerntypen (d. h. für jeden Kerntyp, +100 ergibt den Prüfer), z. B. ist Z104 der Prüfer für Z4/TypZ200
–Z299
: eingebaute Implementierungen für die Prüfer für die Kerntypen (d. h. Z204 ist die eingebaute Implementierung für den Prüfer für Z4/Typ)Z300
–Z399
: vorerst nicht zugewiesenZ400
–Z499
: reserviert für die lokale NutzungZ500
–Z599
: Kern-Fehlertypen (Z5XX
, daZ5
der Fehler ist) (Siehe § Kern-Fehlertypen unten.)Z600
–Z699
: Kern-Programmiersprachen (Z6XX
, daZ61
die Programmiersprache ist)Z700
–Z799
: vorerst nicht zugewiesenZ800
–Z899
: Definitionen von Kernfunktionen mit eingebauten Funktionen (Z8XX
, daZ8
die Funktion ist) (Siehe § Kernfunktionen unten.)Z900
–Z999
: eingebaute Funktionen für die Kernfunktionen (sie sind die entsprechende Z8XX +100)Z1000
–Z2999
: natürliche Sprachen (Instanzen von Z60)Z3000
–Z5999
: reserviert für die zukünftige NutzungZ6000
–Z6999
: Typen, Funktionen, etc. für das Nutzen von Inhalten von Wikidata und anderen Wikimedia-QuellenZ6000
–Z6099
: Typen für Inhalte von Wikidata und anderen Wikimedia-QuellenZ6100
–Z6199
: Prüfer für diese TypenZ6200
–Z6299
: integrierte Implementierungen der PrüferZ6800
–Z6899
: Hilfsfunktionen für diese Typen, die integriert sein müssen (z. B. Abrufen, Gleichheit)Z6900
–Z6999
: integrierte Implementierungen der Hilfsfunktionen
Z7000
–Z7999
: reserviert für die zukünftige NutzungZ8000
–Z8999
: Tester für jede vordefinierte Funktion (z. B. wird Z801 über Z8010, Z8011, Z8012, … Z8019 getestet).Z9000
–Z9999
: reserviert für die zukünftige Nutzung
Kerntypen
Z1
: ZObjekt, die Wurzel.Z2
: Persistentes Objekt (Typ): alles im Wiki ist einZ2
, darum hat es eine so niedrige ZID.Z3
: Schlüssel (Typ): da das Wort key auf Englisch drei Buchstaben hat.Z4
: Typ (Typ): da das Wort type auf Englisch vier Buchstaben hat.Z5
: Fehler (Typ): da das Wort error auf Englisch fünf Buchstaben hat. (Siehe § Kern-Fehlertypen unten.)Z6
: Zeichenkette (Typ): da das Wort string auf Englisch sechs Buchstaben hat.Z7
: Funktionsaufruf (Typ): da Funktionsaufrufe die Hauptmagie des Systems sind und 7 eine magische Zahl ist. Sie ist außerdem nah anZ8
.Z8
: Funktion (generischer Typ, also technisch gesehen eine Funktion): da function auf Englisch acht Buchstaben hat. (Siehe § Kernfunktionen unten.)Z9
: Referenz (Typ): da das Wort reference auf Englisch neun Buchstaben hat.Z10
: Liste (generischer Typ, also technisch gesehen eine Funktion): da es sie erste Zahl ist, die zwei Ziffern hat.Z11
: Monolingualer Text (Typ): da es nur eine Sprache ist und der Name one enthält.Z12
: Multilingualer Text (Typ): da es eine Erweiterung vonZ11
ist.Z13
: Leere Liste (Liste): die Natur verabscheut das Vakuum und Menschen mögen die 13 nicht.Z14
: Implementierung (Typ): da das Wort implementation auf Englisch vierzehn Buchstaben hat.Z15
: Noch nicht zugewiesen.Z16
: Code (Typ): kein guter Grund, es liegt nah an Z14 und Z61/Programmiersprache.Z17
: Argumentdeklaration (Typ).Z18
: Argumentreferenz (Typ).Z19
: Noch nicht zugewiesen.Z20
: Tester (Typ): da 20/20 die perfekte Vision ist und Tests Fehler sichtbar machen.Z21
: Einheit (Typ).Z22
: Auswertungsergebnis (Typ).Z23
: Nichts (Typ).Z24
: Leere (Einheit).Z25
: Noch nicht zugewiesen.Z26
: Noch nicht zugewiesen.Z27
: Noch nicht zugewiesen.Z28
: Noch nicht zugewiesen.Z29
: Noch nicht zugewiesen.Z30
: Noch nicht zugewiesen.Z31
: Monolingualer Textsatz (Typ).Z32
: Multilingualer Textsatz (Typ): da es eine Erweiterung vonZ31
ist.Z33
: Noch nicht zugewiesen.Z34
: Noch nicht zugewiesen.Z35
: Noch nicht zugewiesen.Z36
: Noch nicht zugewiesen.Z37
: Noch nicht zugewiesen.Z38
: Noch nicht zugewiesen.Z39
: Schlüsselreferenz (Typ): wegen Z3/Schlüssel und Z9/Referenz.Z40
: Boolesch (Typ): da Boole erstmals (18)40 publizierte.Z41
: Wahr (Boolesch).Z42
: Falsch (Boolesch).Z43
: Noch nicht zugewiesen.Z44
: Noch nicht zugewiesen.Z45
: Noch nicht zugewiesen.Z46
: Noch nicht zugewiesen.Z47
: Noch nicht zugewiesen.Z48
: Noch nicht zugewiesen.Z49
: Noch nicht zugewiesen.Z50
: Fehlertyp (Typ): da FehlerZ5
ist.Z60
: Natürliche Sprache (Typ): daZ6
eine Zeichenkette ist.Z61
: Programmiersprache (Typ): daZ16
Code ist.Z80
: Byte (Typ): da es ein Oktett ist.Z84
: Vereinigung (Typ).Z85
: Noch nicht zugewiesen.Z86
: Codepunkt (Typ): da es nicht genau ein Z80/Byte ist, sondern eher eine Z6/Zeichenkette.Z99
: Zitat (Typ): da es ein bisschen wie ein schließendes Anführungszeichen auf Englisch aussieht.
Kernfunktionen
Z801
Echo: T ➝ T- gibt die Eingabe unverändert aus
Z802
If: Boolean, T, T ➝ T- gibt das zweite Argument zurück, falls das erste wahr ist, sonst das dritte; if hat zwei Buchstaben
Z803
Value by key: Key reference, Any ➝ Any- gibt den Wert je Schlüssel aus dem Objekt zurück; Z3/Schlüssel
Z805
Reify: Any ➝ List(Pair(Key reference, Any))- transformiert ein Objekt in eine Liste von Schlüssel-Wert-Paaren; reify hat fünf Buchstaben
Z808
Abstract: List(Pair(Key reference, Any)) ➝ Any- transformiert eine Liste von Schlüssel-Wert-Paaren in ein Objekt; abstract hat acht Buchstaben.
Z810
Prepend element to list: T, List(T) ➝ List(T)- fügt ein Objekt am Anfang einer sortierten Liste von Objekten ein (da Z10 Liste ist).
Z811
First element: List(T) ➝ T- erhält das erste Objekt einer sortierten Liste von Objekten (da Z10 Liste ist und wir das erste erhalten)
Z812
List without first element: List(T) ➝ List(T)- erhält die Liste ohne das erste Objekt (da Z10 Liste ist und wir das zweite, den Rest, erhalten)
Z813
Empty: List(T) ➝ Boolean- Ausgabe, wenn eine Liste kein Objekt enthält (da Z13 Leere Liste ist).
Z820
Trigger Metadata: String, Any ➝ Any- nimmt den gegebenen Wert (einen Fehler oder andere Metadaten) und gibt ihn in der Antwort des Funktionsaufrufs unter dem Namen der Zeichenketteneingabe aus.
Z821
First: Pair(T1, T2) ➝ T1- extrahiert den ersten Wert eines Paars (da Z22 Paar ist).
Z822
Second: Pair(T1, T2) ➝ T2- extrahiert den zweiten Wert eines Paars (da Z22 Paar ist).
Z844
Boolean equality: Boolean, Boolean ➝ Boolean- gibt true aus, wenn die zwei Eingaben gleich sind, andernfalls false
Z860
Language code to language: String ➝ Language- nimmt einen Sprachcode als Zeichenkette und gibt ein Objekt für eine natürliche Sprache zurück
Z866
String equality: String, String ➝ Boolean- gibt true aus, wenn die zwei Eingaben gleich sind, andernfalls false
Z868
Convert: String ➝ List(Character)- konvertiert eine Zeichenkette in eine Liste von Zeichen, wegen Z6/Zeichenkette und Z86/Zeichen.
Z873
Map: Function, List ➝ List- Gibt eine Liste aus, bei der jedes Z1/Objekt einer eingegebenen Z881/Liste von der gegebenen Z8/Funktion verarbeitet wurde.
Z876
Reduce: Function, List, Object ➝ Object- Gibt einen Wert aus, nachdem die gegebene Funktion für jedes Objekt der Liste ausgeführt wurde, beginnend mit dem gegebenen Objekt.
Z868
Convert: String ➝ List(Character)- konvertiert eine Zeichenkette in eine Liste von Zeichen, wegen Z6/Zeichenkette und Z86/Zeichen.
Z881
Typed list: Type ➝ Type- nimmt einen Typ und gibt einen Typ einer Liste von Elementen dieses Typs zurück
Z882
Typed pair: Type, Type ➝ Type- nimmt zwei Typen und gibt einen Typ zurück, der ein Paar von diesen darstellt
Z883
Map: … ➝ …- …
Z884
Union: T, T ➝ T- nimmt zwei Typen und gibt einen Typ zurück, der einen davon akzeptiert
Z885
Error type to type: Error type ➝ Type- nimmt einen Fehlertyp und erstellt daraus einen Typ
Z886
Convert: List*(Character) ➝ String- konvertiert eine Liste von Zeichen in eine Zeichenkette, wegen Z86/Zeichen und Z6/Zeichenkette.
Z887
Reduce: … ➝ …- …
Z888
Same: Character, Character ➝ Boolean- vergleicht zwei Zeichen und gibt zurück, wenn sie gleich sind.
Z899
Unquote: Quote ➝ Any- Beendet das Zitat eines ZObjekts, wegen Z99/Zitat.
Kern-Fehlertypen
Z501
(Fehlermeldung, Eingabe): SyntaxfehlerZ502
(Untertyp, Wert): nicht wohlgeformt, verweist auf Z52X oder Z53XZ503
(Funktionsname): noch nicht implementiertZ504
(ZID): ZID nicht gefundenZ505
(erwartet, tatsächlich, Argumente): Anzahl der Argumente stimmt nicht übereinZ506
(erwartet, tatsächlich, Argumente): Argumenttyp stimmt nicht übereinZ507
(Funktionsaufruf): Fehler in der AuswertungZ508
(Objekt): konkurrierende SchlüsselZ509
(Fehler): Liste von FehlernZ510
(keine): nullZ511
(Schlüsselreferenz, Objekt): Schlüssel nicht gefundenZ512
(Objekt): Fehler Z9Z513
(aufgelöstes Objekt): aufgelöstes Objekt ohne Z2K2Z514
(Implementierung): eingebaute Funktion existiert nichtZ515
(Implementierung): eingebaute ID ist fehlerhaftZ516
(Schlüssel, schlechter Wert): Fehler beim ArgumentwertZ517
(erwarteter Typ, tatsächlicher Typ, zurückgegebener Wert, weitergegebener Fehler): zurückgegebener Wert stimmt nicht übereinZ518
(erwarteter Typ, Objekt, weitergegebener Fehler): Objekttyp stimmt nicht übereinZ519
(Objekt): undefinierter ListentypZ520
(Objekt): falscher ListentypZ521
(verletzender Wert): ZObjekte dürfen keine Zahl, boolesch oder null seinZ522
(verletzender Index im Array, verbreiteter Fehler): Array-Element nicht wohlgeformtZ523
(Objekt): Fehlende Z1K1Z524
(Wert von Z1K1): Z1K1 darf keine Zeichenkette und kein Array seinZ525
(Schlüssel): Ungültiger SchlüsselZ526
(Schlüssel, verbreiteter Fehler): nicht wohlgeformter WertZ531
(ganzes Objekt): Z6 muss zwei Schlüssel habenZ532
(ganzes Objekt): Z6 ohne Z6K1Z533
(Wert von Z6K1): Z6K1 muss eine Zeichenkette seinZ534
(ganzes Objekt): Z9 muss zwei Schlüssel habenZ535
(ganzes Objekt): Z9 ohne Z9K1Z536
(Wert von Z9K1): Z9K1 muss eine Zeichenkette in JSON seinZ537
(Wert von Z9K1): Z9K1 muss wie eine Referenz aussehenZ538
(Seitentitel): falscher NamensraumZ539
(Seitentitel): falscher InhaltstypZ540
(Sprachcode): ungültiger SprachcodeZ541
(Sprachcode): Sprachcode nicht gefundenZ542
(erwarteter Typ, tatsächliches Objekt): erwarteter Typ, tatsächliches ObjektZ543
(Typenname): Typ nicht gefundenZ544
(Typen-ZID, Typenname, vorhandener Typenname): widersprüchliche TypennamenZ545
(Typen-ZID, Typenname, vorhandene Typen-ZID): widersprüchliche Typen-ZIDsZ546
(Typen-ZID, Typenname): eingebauter Typ nicht gefundenZ547
(Eingabe): ungültiges FormatZ548
(Fehlermeldung, Eingabe): ungültiges JSONZ549
(Referenzwert): ungültige ZReferenzZ550
(Referenzwert): unbekannte ZReferenzZ551
(Schlüssel, erwarteter Typ, tatsächlicher Typ): Schematyp stimmt nicht übereinZ552
(Index, erwarteter Typ, tatsächlicher Typ): Typ des Array-Elements stimmt nicht übereinZ553
(ZObjekt): nicht erlaubter WurzeltypZ554
(kollidierende ZID): Bezeichnung kollidiert mit der Bezeichnung eines anderen ZObjektesZ555
(ZID, Titel): ZID und Seitentitel stimmen nicht übereinZ556
(Titel): ungültiger SeitentitelZ557
(Fehlermeldung): Benutzer hat nicht die BerechtigungZ558
(Programmiersprache): ungültige ProgrammierspracheZ559
(keine): Benutzer darf Funktionen nicht auswertenZ560
(Auswertungsergebnis): ungültiges AuswertungsergebnisZ561
(weitergegebener Fehler): ungültige AuswertungsanfrageZ562
(fehlende Eigenschaft): unvollständige AuswertungsanfrageZ563
(Aufruf): Aufruf durch nicht wiedereintretenden AusführerZ564
(Inhalte): ungültige AusführerantwortZ565
(fehlende Eigenschaft): unvollständige AusführeranfrageZ570
(Beschränkungslimit des Orchestrierers): Beschränkungslimit des Orchestrierers erreichtZ571
(Beschränkungslimit des Auswerters): Beschränkungslimit des Auswerters erreichtZ572
(Rekursionslimit, Funktionsname): Rekursionslimit im Orchestrierer erreichtZ573
(Rekursionslimit, Funktionsname): Rekursionslimit im Auswerter erreichtZ574
(Zeitlimit): Zeitlimit im Orchestrierer erreichtZ575
(Zeitlimit): Zeitlimit im Auswerter erreicht