Abstract Wikipedia/Reserved ZIDs/de
- 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
Das Folgende kann sich noch ändern und kann diskutiert werden. Einige Erklärungen folgen, um vielleicht beim Erinnern zu helfen (obwohl es nicht notwendig sein sollte, sie auswendig zu lernen). |
<span id="_Ranges">
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
–Z1999
: natürliche Sprachen (Instanzen von Z60)Z2000
–Z6999
: reserviert für die zukünftige NutzungZ7000
–Z7999
: experimentell, genutzt für NLG, wird geändertZ8000
–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
<span id="_Core_types">
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
: Paar (generischer Typ, also technisch gesehen eine Funktion): da es zwei Zweien sind.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.
<span id="_Core_functions">
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.
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.
<span id="_Core_error_types">
Kern-Fehlertypen
Z501
(error message, input): syntax errorZ502
(subtype, value): not wellformed, points to Z52x or Z53xZ503
(function name): not implemented yetZ504
(zid): Zid not foundZ505
(expected, actual, args): number of arguments mismatchZ506
(expected, actual, arg): argument type mismatchesZ507
(function call): error in evaluationZ508
(object): competing keysZ510
(none): nilZ511
(key reference, object): key not foundZ512
(object): Z9 errorZ513
(resolved object): resolved object without Z2K2Z514
(implementation): Builtin does not existZ515
(implementation): Builtin ID is erroneousZ516
(key, bad value): Argument value errorZ521
(offending value): ZObjects must not be number or boolean or nullZ522
(offending index in array, propagated error): Array element not well formedZ523
(object): Missing Z1K1Z524
(value of Z1K1): Z1K1 must not be a string or arrayZ525
(key): Invalid keyZ526
(key, propagated error): not wellformed valueZ531
(whole object): Z6 must have 2 keysZ532
(whole object): Z6 without a Z6K1Z533
(value of Z6K1): Z6K1 must be a stringZ534
(whole object): Z9 must have 2 keysZ535
(whole object): Z9 without a Z9K1Z536
(value of Z9K1): Z9K1 must be a string in JSONZ537
(value of Z9K1): Z9K1 must look like a referenceZ538
(page title): wrong namespaceZ539
(page title): wrong content typeZ540
(language code): invalid language codeZ541
(language code): language code not foundZ542
(expected type, actual object): expected type, actual objectZ543
(type name): type not foundZ544
(type zid, type name, existing type name): conflicting type namesZ545
(type zid, type name, existing type zid): conflicting type ZidsZ546
(type zid, type name): builtin type not foundZ547
(input): invalid formatZ548
(error message, input): invalid JSONZ549
(reference value): invalid ZReferenceZ550
(reference value): unknown ZReferenceZ551
(key, expected type, actual type): schema type mismatchZ552
(index, expected type, actual type): array element type mismatchZ553
(zobject): disallowed root typeZ554
(clashing ZID, language): label clashes with another ZObject's labelZ555
(ZID, title): mis-matched ZID and page titleZ556
(title): invalid page titleZ557
(error message): user does not have permissionZ558
(programming language): invalid programming language