Abstrakte Wikipedia/Frühe Funktionsbeispiele
Dies ist eine Liste möglicher Beispiele für Funktionen, die möglicherweise für das Wiki der Funktionen geeignet sind oder auch nicht. Beachte, dass die letztendliche Autorität darüber, was geeignet ist und was nicht, bei der Gemeinschaft liegt und diese Liste von Beispielen nicht dazu gedacht ist, eine Entscheidung darüber zu treffen. Außerdem sollen weder die Namen noch die Signaturen der Funktionen perfekt sein, sondern sind nur Skizzen.
Liste vorgeschlagener Funktionen
- multiply : integer, integer ➝ integer
- factorize : positive integer ➝ list(positive integer)
- percent change : quantity, quantity ➝ percentage
- interest : quantity(currency), timespan, percentage ➝ quantity
- payment per period : quantity(currency), timespan, percentage, timespan ➝ quantity
- and : boolean, boolean ➝ boolean
- any : list(boolean) ➝ boolean
- and : kleenean, kleenean ➝ kleenean
- length : string ➝ integer
- type of : any ➝ type
- format : integer, style ➝ string
- reverse : string ➝ string
- rot13 : string ➝ string
- hash sha256 : string ➝ sha256
- validate hash : string, sha256 ➝ boolean
- validate check digit : isbn13 ➝ boolean
- capitalize : string ➝ string
- letter histogram : string ➝ list(pair(character, positive integer))
- head(T) : list(T) ➝ T
- filter(T) : list(T), function(T ➝ boolean) ➝ list(T)
- number of arguments : function(any ➝ any) ➝ integer
- is empty(T) : list(T) ➝ boolean
- convert : julian calendar date ➝ gregorian calendar date
- add : julian calendar date, timespan ➝ julian calendar date
- day of week : gregorian calendar date ➝ weekday
- convert(T) : quantity(T), unit(T) ➝ quantity(T)
- larger(T) : quantity(T), quantity(T) ➝ kleenean
- distance : geocoordinate, geocoordinate ➝ quantity(length)
- distance : city, city ➝ quantity(length)
- distance : planet, planet, gregorian calendar date ➝ quantity(length)
- size : geoshape ➝ quantity(area)
- volume of torus : quantity(length), quantity(length) ➝ quantity(volume)
- age at birth of first known child : person ➝ timespan
- filter dishes by allergen : list(dish), allergen ➝ list(dish)
- transpose : melody, key ➝ melody
- head of state at birth : person ➝ person
- filter by tomorrow’s heights : list(location), quantity(temperature) ➝ list(location)
- most specific common taxon : taxon, taxon ➝ taxon
- lives in : taxon, location ➝ kleenean
- lived contemporary : taxon, taxon ➝ kleenean
- lived contemporary : person, person ➝ kleenean
- sum of populations in counties : state ➝ quantity
- pie chart : list(pair(label, integer)), width ➝ image
- answer to everything : nothing ➝ integer
- dominant color : image ➝ rgb color
- does Wikipedia link : qid, qid, language code ➝ boolean
- height : image ➝ integer
- resize : image, integer, integer ➝ image
- mask filter : image, bitmask ➝ image
- demonym : location ➝ noun
- plural : English noun ➝ string
- plural : German noun, German case ➝ string
- make clause : noun phrase, verb phrase, gregorian calendar date ➝ clause
- render : clause, language ➝ string
Wie man die Beispiele liest
Die oben verwendete Syntax ist nur eine mögliche kompakte Darstellung. Die tatsächliche Benutzeroberfläche des Wikis der Funktionen zeigt dies möglicherweise auf unterschiedliche Weise (siehe die frühen Entwürfe für Beispiele).
- Zuerst kommt eine mögliche englische Bezeichnung der Funktion, die in Fettschrift angezeigt wird (sie kann später im Wiki der Funktionen oder in Wikidata übersetzbar sein und vorsichtig anstelle der internen und eindeutigen ZID verwendet werden — die zur Laufzeit von der Auswertemaschine oder zum Zusammenstellen anderer Funktionen verwendet wird — wobei zu beachten ist, dass diese einfachen Namen möglicherweise mehrdeutig sind und eine Festlegung des Gültigkeitsbereichs erfordern oder für die Verwendung in verschiedenen Implementierungssprachen mit einem anderen Alias versehen werden können), gefolgt von einem Doppelpunkt :.
- Wenn dem Funktionsnamen vor dem Doppelpunkt ein Paar runde Klammern () folgt, bedeutet dies, dass die Funktion selbst generisch ist und auf einem variablen Eingabetyp T basiert.
- Anschließend folgt eine Liste der Typen der Eingabeargumente der Funktion, getrennt durch Kommas ,, gefolgt von einem Pfeil ➝ und dem Typ des Ausgabewerts.
- Beachte, dass Typen vorerst durch ihren englischen beschreibenden Namen angegeben werden, sie werden aber auch als ZObjekte beschrieben, mit übersetzbaren Bezeichnungen und einer internen eindeutigen ZID.
- Wenn ein Typ runde Klammern () hat, handelt es sich um eine Typfunktion, die einen Typ zurückgibt, der durch das Argument in den Klammern weiter spezifiziert wird.
- Mögliche Fehler (oder Ausnahmen) werden vorerst nicht aufgeführt, können aber später mit ihrer eigenen Semantik spezifiziert werden (möglicherweise durch Verwendung eines generischen Typkonstruktors, der Variantentypen für das Ergebnis beschreibt).
- Einschränkungen für Werte der angegebenen Eingabe- oder Ausgabetypen sind nicht angegeben. Sie können später durch die Erstellung von Untertypen/abgeleiteten Typen beschrieben werden, zum Beispiel:
- Der Typ Ganzzahl kann als Untertyp eines allgemeineren Zahlentyps angegeben werden;
- Der Typ Byte kann ein bestimmter Untertyp des Typs Ganzzahl sein;
- Der Typ Nomen kann ein bestimmter Untertyp des Typs Zeichenkette oder wahrscheinlicher eines Typs monolingualer Text sein, der eine zusätzliche Sprachcodeeigenschaft trägt und der durch einen generischen Typkonstruktor (eine Art Funktion, deren Eingabeargumente andere Typen oder Werte sein können) angegeben wird;
- Der Typ Menge kann als generischer Typkonstruktor angegeben werden, der ein Eingabeargument als Wert oder Typ annimmt und die Art der Messung oder eine physikalische Dimension angibt, oder andere Eingabeargumente, die eine Projektion (geometrische Transformationen und Achse) und ein Referenzobjekt angeben, getrennt von der Spezifikation der Maßeinheit (dies könnte insbesondere für geografische Koordinaten, Temperaturen oder Qualifikationen für eine bestimmte Gerichtsbarkeit nützlich sein): Sie können als abgeleitete Typen definiert werden, die ihren eigenen generischen Typkonstruktor nutzen;
- Die Typen Ort und Person können auch als generischer Typkonstruktor angegeben werden, der ein oder mehrere Eingabeargumente zur Angabe vieler erforderlicher oder optionaler Eigenschaften verwendet, möglicherweise durch Referenzierung anderer Objekte mit ihren eigenen geeigneten Typen.
- Im Moment gibt es keine Hinweise auf die Standardwerte für Eingabeargumente (wenn eines davon weggelassen wird) oder darauf, ob die Rückgabewerte an die Eingabeargumente gebunden sind oder ob die Eingabeargumente geändert werden, wenn auf sie verwiesen wird (im Moment gehen wir von einem reinen Funktionsmodell aus, bei dem alle Ein- und Ausgaben unabhängig voneinander sind).
- Außerdem kann die textuelle Darstellung konstanter Werte von der Spezifikation von Typkonvertierungsfunktionen abhängen (einschließlich Parsern oder Renderern für eine bestimmte Sprache, die als Eingabeargument oder als Teil einer Laufzeitumgebung angegeben wird, die explizit als zusätzliches Argument oder implizit mit einem Standardwert übergeben wird).