Wikifunctions:Rezervované ZIDy
- Wiki funkcí v současné době načítá několik statických ZObjektů při startu. Časem jich budeme potřebovat několik dalších.
Tato stránka je o zábavné diskusi o tom, kolik ZID bychom měli vyhradit, zda musí být sousedící a jaké by měly být tyto první ZID. Může to být také místo pro sázení velikonočních vajíček (easter eggů), což je funkce, která se na Wikidatech ukázala jako poměrně oblíbená.
Všimněte si, že v zájmu zjednodušení diskuse v současné době neuvažujeme o budoucí možnosti federativních instancí softwaru provozujícího wiki funkce a o tom, jak to bude fungovat. Uvažujeme výhradně o tom, které ZID pro samotnou wiki funkcí by měly být vyhrazeny.
Měly by rezervované ZIDy na sebe navazovat?
Ano.
Určitá jednoduchost spočívá v tom, že se řekne "všechny kódy ZID se čtyřmi nebo méně číslicemi jsou vyhrazeny".
Existuje také hybridní model vyhrazení všech ZID pod určitým číslem a dodatečné vyhrazení některých větších ZID pro easter eggy nebo specifické důvody (to udělala Wikidata).
Kolik ZID bychom si měli rezervovat?
Vyhraďme si všechny identifikátory ZID se čtyřmi nebo méně číslicemi.
Všechny základní objekty by byly v ZID s třemi a méně číslicemi a čtyřmístné ZID bychom ponechali pro jazyky.
To zhruba odpovídá návrhům členů komunity na diskusní stránce a na Phabricatoru. Zejména také nebudeme obsazovat prostor.
Aktuálně rezervované ZID
See Wikifunctions:Reserved ZIDs/all for a list of currently pre-defined objects.
Rozsahy
Určité prostory vyhrazujeme pro určité druhy předem definovaných objektů.
Z1
–Z99
: základní typy. (Viz § Základní typy níže.)Z100
–Z199
: validátory pro základní typy (např. pro každý jádrový typ, +100 dává validátor), např. Z104 je validátor pro Z4/Type (Typ)Z200
–Z299
: vestavěné implementace validátorů pro základní typy (tj. Z204 je vestavěná implementace validátoru pro Z4/Type (Typ)).Z300
–Z399
: prozatím nepřiřazenoZ400
–Z499
: vyhrazeno pro místní použitíZ500
–Z599
: základní typy chyb (Z5xx
protožeZ5
je chyba) (Viz § Základní typy chyb níže.)Z600
–Z699
: základní programovací jazyky (Z6xx
protožeZ61
je programovací jazyk)Z700
–Z799
: prozatím nepřiřazenoZ800
–Z899
: definice základních funkcí s vestavěnými moduly (Z8xx
protožeZ8
je funkce) (Viz § Základní funkce níže.)Z900
–Z999
: vestavěné moduly pro základní funkce (jsou +100 od příslušného Z8xx).Z1000
–Z2999
: přirozené jazyky (instance Z60)Z3000
–Z5999
: vyhrazeno pro budoucí použitíZ6000
–Z6999
: Types, Functions, etc. for fetching and using Wikidata and other Wikimedia sourcesZ7000
–Z7999
: experimentální, používaný pro NLG, bude změněnZ8000
–Z8999
: Testery pro každou předem definovanou funkci (např. Z801 se testuje prostřednictvím Z8010, Z8011, Z8012, ... Z8019).Z9000
–Z9999
: vyhrazeno pro budoucí použití
Základní typy
Z1
: ZObject, kořenový prvek.Z2
: Persistentní objekt (Type): vše na wiki jeZ2
, proto má tak nízký ZID.Z3
: Klíč (Type): protože slovo key má v angličtině tři písmena.Z4
: Typ (Type): protože slovo type má v angličtině čtyři písmena.Z5
: Chyba (Type): protože slovo error má v angličtině pět písmen. (Viz § Základní typy chyb níže.)Z6
: Řetězec (Type): protože slovo string má v angličtině šest písmen.Z7
: Volání funkce (Type): protože volání funkcí je hlavním kouzlem systému a 7 je magické číslo. Je také blízké hodnotěZ8
.Z8
: Funkce (obecný typ, technicky tedy funkce): protože function má v angličtině osm písmen. (Viz § Základní funkce níže.)Z9
: Reference (Type): protože slovo reference má v angličtině devět písmen.Z10
: Seznam (obecný typ, technicky tedy funkce): protože je to první číslo, které má dvě číslice.Z11
: Jednojazyčný text (Type): protože je to jen jeden jazyk a v názvu je jeden.Z12
: Vícejazyčný text (Type): protože se jedná o rozšířeníZ11
.Z13
: prázdný seznam (List): příroda se štítí vakua a lidé nemají rádi 13.Z14
: Implementace (Type): protože slovo implementation má v angličtině čtrnáct písmen.Z15
: Ještě není přiděleno.Z16
: Kód (Type): žádný dobrý důvod, je blízký Z14 a Z61/Programovací jazyk.Z17
: Deklarace argumentu (Type).Z18
: Odkaz na argument (Type).Z19
: Ještě není přiděleno.Z20
: Tester (Type): protože 20/20 je dokonalý zrak a testy zviditelňují chyby.Z21
: Jednotka (Type).Z22
: Pár (obecný typ, technicky tedy funkce): protože jde o dvě dvojice.Z23
: Nic (Type).Z24
: void (Unit).Z25
: Ještě není přiděleno.Z26
: Ještě není přiděleno.Z27
: Ještě není přiděleno.Z28
: Ještě není přiděleno.Z29
: Ještě není přiděleno.Z30
: Ještě není přiděleno.Z31
: Jednojazyčná sada textů (Type).Z32
: Vícejazyčná sada textů (Type): protože se jedná o rozšířeníZ31
.Z33
: Ještě není přiděleno.Z34
: Ještě není přiděleno.Z35
: Ještě není přiděleno.Z36
: Ještě není přiděleno.Z37
: Ještě není přiděleno.Z38
: Ještě není přiděleno.Z39
: Odkaz na klíč (Type): protože Z3/Key Z9/Reference.Z40
: Boolean (Type): protože Boole poprvé publikoval v (18)40.Z41
: true (Boolean).Z42
: false (Boolean).Z43
: Ještě není přiděleno.Z44
: Ještě není přiděleno.Z45
: Ještě není přiděleno.Z46
: Ještě není přiděleno.Z47
: Ještě není přiděleno.Z48
: Ještě není přiděleno.Z49
: Ještě není přiděleno.Z50
: Typ chyby (Type): protože Error (Chyba) jeZ5
.Z60
: Přirozený jazyk (Type): protožeZ6
je string (řetězec).Z61
: Programovací jazyk (Type): protožeZ16
je code (kód).Z80
: Byte (Type): protože se jedná o oktet.Z84
: Union (Type).Z85
: Ještě není přiděleno.Z86
: Code point (Type): protože to není přesně Z80/Byte, ale spíše Z6/String.Z99
: Uvozovky (Type): protože v angličtině vypadá trochu jako uzavírací uvozovky.
Základní funkce
Z801
Echo: T ➝ T- vrací vstup beze změny
Z802
If: Boolean, T, T ➝ T- vrací druhý argument, pokud je první pravdivý, jinak třetí; pokud má dvě písmena
Z803
Value by key: Key reference, Any ➝ Any- vrací hodnotu podle klíče z objektu; Z3/Key
Z805
Reify: Any ➝ List(Pair(Key reference, Any))- transformuje libovolný objekt na seznam dvojic klíč-hodnota; reify má pět písmen.
Z808
Abstract: List(Pair(Key reference, Any)) ➝ Any- transformuje seznam dvojic klíč-hodnota na objekt; abstract má osm písmen.
Z810
Prepend element to list: T, List(T) ➝ List(T)- vloží objekt na začátek uspořádaného seznamu objektů (protože Z10 je list (seznam)).
Z811
First element: List(T) ➝ T- zjistí první položku v uspořádaném seznamu objektů (protože Z10 je seznam a my získáme první položku)
Z812
List without first element: List(T) ➝ List(T)- vrací seznam bez prvního objektu (protože Z10 je list (seznam) a my získáme druhý, zbytek)
Z813
Empty: List(T) ➝ Boolean- vrací, zda list (seznam) neobsahuje žádnou položku (protože Z13 je empty list (prázdný seznam)).
Z820
Trigger Metadata: String, Any ➝ Any- přebírá zadanou hodnotu (chybu nebo jiná metadata) a vypíše ji do odpovědi volání funkce pod názvem vstupu Stringu.
Z821
First: Pair(T1, T2) ➝ T1- získá první hodnotu pairu (dvojice) (protože Z22 je pair (dvojice)).
Z822
Second: Pair(T1, T2) ➝ T2- získá druhou hodnotu pairu (dvojice) (protože Z22 je pair (dvojice)).
Z844
Boolean equality: Boolean, Boolean ➝ Boolean- vrací true (pravda), pokud jsou oba vstupy stejné, jinak false (nepravda)
Z860
Language code to language: String ➝ Language- vstupem je kód jazyka zadaný jako string (řetězec) a vrací objekt Language (Přirozený jazyk)
Z866
String equality: String, String ➝ Boolean- vrací true (pravda), pokud jsou oba vstupy stejné, jinak false (nepravda)
Z868
Convert: String ➝ List(Character)- convert a string into a list of Characters, because Z6/String and Z86/Character.
Z873
Map: Function, List ➝ List- Returns a list where each of the Z1/objects of an input Z881/List has been processed by the given Z8/Function
Z876
Reduce: Function, List, Object ➝ Object- Returns a value after running the given Function on each object of the List, starting with the given Object
Z868
Convert: String ➝ List(Character)- převádí string (řetězec) na seznam Characterů (znaků), protože Z6/String (Řetězec) a Z86/Character (Znak).
Z881
Typed list: Type ➝ Type- vstupme je type (typ) a vrací type (typ) seznamu prvků tohoto typu
Z882
Typed pair: Type, Type ➝ Type- vstupem jsou dva typy a vrací type (typ) reprezentující dvojici těchto typů
Z883
Map: … ➝ …- …
Z884
Union: T, T ➝ T- vstupem jsou dva typy a vrací type (typ), který je akceptován
Z885
Error type to type: Error type ➝ Type- vstupem je error type (typ chyby) a vytváří z něj type (typ)
Z886
Convert: List*(Character) ➝ String- převádí seznam znaků na řetězec, protože Z86/Character (Znak) a Z6/String (Řetězec).
Z887
Reduce: … ➝ …- …
Z888
Same: Character, Character ➝ Boolean- porovnává dva znaky a vrácí, zda se rovnají.
Z899
Unquote: Quote ➝ Any- Oduvozovkuje objekt ZObject, protože Z99/Quote.
Základní typy chyb
Z501
(chybová zpráva, vstup): syntaktická chybaZ502
(podtyp, hodnota): není dobře zapsáno, ukazuje na Z52x nebo Z53xZ503
(název funkce): zatím neimplementovánoZ504
(zid): Zid nebyl nenalezenZ505
(očekáváný počet, vložený počet, argumenty): nesprávný počet argumentůZ506
(očekávaný typ, vložený typ, argument): nesprávný typ argumentuZ507
(volání funkce): chyba při evaluaciZ508
(objekt): konkurenční klíčeZ509
(errors): List of errorsZ510
(none): nilZ511
(klíč, objekt): klíč nebyl nalezenZ512
(object): Z9 chybaZ513
(cílový objekt): cílový objekt bez Z2K2Z514
(implementace): Builtin (zabudovaná funkce) neexistujeZ515
(implementace): Builtin ID (zabudované ID) je chybnéZ516
(klíč, špatná hodnota): Chyba hodnoty argumentuZ517
(expected type, actual type, returned value, propagated error): Return type mismatchZ518
(expected type, object, propagated error): Object type mismatchZ519
(object): Undefined list typeZ520
(object): Wrong list typeZ521
(chybná hodnota): ZObject nesmí být číslo nebo boolean nebo nullZ522
(chybný index v poli, propagovaná chyba): Prvek pole není správnýZ523
(objekt): Chybí Z1K1Z524
(hodnota Z1K1): Z1K1 nesmí být string (řetězec) nebo array (pole)Z525
(klíč): Neplatný klíčZ526
(klíč, propagovaná chyba): není správně formulovaná hodnotaZ531
(celý objekt): Z6 musí mít 2 klíčeZ532
(celý objekt): Z6 bez Z6K1Z533
(hodnota Z6K1): Z6K1 musí být string (řetězec)Z534
(celý objekt): Z9 musí mít 2 klíčeZ535
(celý objekt): Z9 bez Z9K1Z536
(hodnota Z9K1): Z9K1 musí být string (řetězec) ve formátu JSONZ537
(hodnota Z9K1): Z9K1 musí být reference (odkaz)Z538
(název stránky): chybný jmenný prostorZ539
(název stránky): chybný typ obsahuZ540
(kód jazyka): neplatný kód jazykaZ541
(kód jazyka): kód jazyka nebyl nalezenZ542
(očekávaný typ, zadaný objekt): očekávaný typ, zadaný objektZ543
(název typu): typ nenalezenZ544
(typ zid, název typu, existující název typu): konfliktní názvy typůZ545
(typ zid, název typu, existující typ zid): konfliktní typ ZidůZ546
(typ zid, název typu): builtin type (vestavěný typ) nenalezenZ547
(vstup): neplatný formátZ548
(chybová zpráva, vstup): neplatný JSONZ549
(referenční hodnota): neplatná ZReferenceZ550
(referenční hodnota): neznámá ZReferenceZ551
(klíč, očekávaný typ, zadaný typ): neshoda typu schématuZ552
(index, očekávaný typ, skutečný typ): neshoda typu prvku poleZ553
(zobject): nepovolený typ kořeneZ554
(kolidující ZID, jazyk): štítek koliduje se štítkem jiného ZObjektuZ555
(ZID, titulek): chybně zadaný ZID a titulek stránkyZ556
(titulek): neplatný titulek stránkyZ557
(chybová zpráva): uživatel nemá oprávněníZ558
(programovací jazyk): neplatný programovací jazykZ559
(none): user not permitted to evaluate functionZ560
(evaluation result): invalid evaluation resultZ561
(propagated error): invalid evaluation requestZ562
(missing property): incomplete evaluation requestZ563
(call): call by non-reentrant executorZ564
(contents): invalid executor responseZ565
(missing property): Incomplete executor requestZ570
(orchestrator rate limit): reached rate limit in orchestratorZ571
(evaluator rate limit): reached rate limit in evaluatorZ572
(recursion limit, function name): reached recursion limit in orchestratorZ573
(recursion limit, function name): reached recursion limit in evaluatorZ574
(time limit): reached time limit in orchestratorZ575
(time limit): reached time limit in evaluator