Wikipédia abstraite/Exemples préliminaires de fonctions
Voici une liste de fonctions possibles, qui pourraient être appropriées ou pas pour le wiki des fonctions. Notez que l’autorité ultime de ce qui sera approprié ou pas sera la communauté et cette liste d’exemples n’est pas destinée à prendre une décision à ce sujet. De même, ni les noms, ni les signatures des fonctions sont conçus pour être parfaits, ce ne sont que des ébauches.
Liste de fonctions proposées
- 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
Comment lire les exemples
La syntaxe utilisée ci-dessus est seulement une représentation compacte possible. L'interface utilisateur effective sur le wiki des fonctions pourrait montrer ceci de bien des façons (voir les maquettes préliminaires pour quelques exemples).
- Vient d’abord un libellé possible en anglais pour la fonction, affiché en caractères gras (il pourrait être traduit plus tard dans le wiki des fonctions ou dans Wikidata et utilisé avec précaution au lieu du ZID interne et non ambigu — qui est utilisé à l’exécution par le moteur d’évaluation ou pour composer d’autres fonctions — en gardant à l’esprit que ces simples noms peuvent être ambigus et pourraient nécessiter une limitation de portée ou pourrait être liés différemment comme alias pour une utilisation dans différents langages de mise en oeuvre), suivi par un signe deux-points :.
- Quand le nom de fonction est suivi d’une paire de parenthèses () avant les deux-points, cela signifie que la fonction elle-même est générique et basée sur un type d’entrée variable T.
- Il est ensuite suivi par une liste des types d’arguments d’entrée de la fonction, séparée par des virgules , et alors suivie par une flèche ➝ et le type de la valeur de sortie.
- Notez que les types sont spécifiés par leur nom descriptif en anglais pour le moment, mais ils seront également décrits en tant qu’Objets Z avec des libellés traductibles et un ZID interne non ambigu.
- Quand un type a des parenthèses (), c’est une fonction de type qui retourne un type spécifié plus complètement par l’argument entre parenthèses.
- Les erreurs possibles (ou exceptions) ne sont pas listées pour le moment, mais pourront être spécifiés plus tard avec leur propre sémantique (éventuellement en utilisant un constructeur de type générique décrivant des types variants pour le résultat).
- Les contraintes pour les valeurs des types d’entrée ou de sortie ne sont pas spécifiés. Ils pourront être décrits plus tard en créant des sous-types ou types dérivés, par exemple :
- le type entier (integer) pourrait être spécifié comme un sous-type d’un type numérique plus général ;
- le type octet (byte) pourrait être spécifié comme un sous-type du type entier ;
- le type nom (noun) pourrait être spécifié comme un sous-type du type chaîne (string), ou plus probablement d’un type texte monolingue contenant une propriété supplémentaire pour le code de langue, spécifié par un constructeur de type générique (un type de fonction dont les arguments d’entrée peuvent être d’autres types ou valeurs) ;
- le type quantité (quantity) pourrait être spécifié comme un constructeur de type générique qui prend un argument d’entrée comme valeur ou comme type, spécifiant la sorte de mesure ou une dimension physique, ou d’autres arguments d’entrée spécifiant une projection (des transformations géométriques ou des axes) et un objet de référence, séparément de la spécification de l’unité de mesure : ceci serait utile notamment pour des coordonnées géographiques, des températures ou des qualifications pour une juridiction particulière : ceux-ci peuvent être définis en utilisant leurs propres constructeurs de types génériques;
- les types lieu (location) ou personne (person) pourraient également être spécifiés comme un constructeur de type générique prenant un ou plusieurs arguments d’entrée pour spécifier de nombreuses propriétés requises ou facultatives, éventuellement en référençant d’autres objets avec leurs propres types appropriés.
- Pour le moment, rien n’indique les valeurs par défaut des arguments d’entrée (quand l’un d’entre eux est omis), ni si les valeurs retournées sont liées aux valeurs d’entrée, ni si les arguments d’entrée sont modifiés quand ce sont des références (pour le moment nous supposerons que c’est un modèle fonctionnel pur, dont toutes les entrées et sorties sont indépendantes des autres).
- De même, la représentation textuelle des valeurs constantes pourrait dépendre de la spécification de fonctions de conversion de type (y compris des analyseurs ou moteurs de rendus pour une langue spécifiée en argument d’entrée ou passée explicitement comme un argument supplémentaire ou comme partie d’un environnement d’exécution, ou implicitement avec certaines valeurs par défaut).