Wikipédia abstraite/Appel de l’évaluateur de fonction

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page Abstract Wikipedia/Function evaluator call and the translation is 100% complete.

liste de diffusion de la Wikipédia abstraite Wikipédia abstraite sur IRC Wikifonctions sur Telegram Wikifonctions sur Mastodon Wikifonctions sur Twitter Wikifonctions sur Facebook Wikifonctions sur Youtube site web de Wikifonctions Translate

Voici un exemple d’appel à l’évaluateur de fonction.

Notez qu’il est supposé que seul l’orchestrateur de fonction devrait appeler l’évaluateur de fonction directement.

Le but de l’évaluateur de fonction est d’être capable de s’exécuter sans appel à une aucune autre source de données, ni aucune autre base de données, ni aucun autre service.

Consulter l’ébauche architecturale de la façon dont l’orchestrateur et l’évaluateur travaillent ensembles.

{
 "type": "Function call",
 "function": {
  "type": "Function",
  "arguments": [
   {
    "type": "Argument declaration",
    "argument type": "Positive integer",
    "key id": "Z144K1",
    "label": {
     "type": "Multilingual text",
     "texts": [
      {
       "type": "Monolingual text",
       "language": "English",
       "text": "left"
      }
     ]
    }
   },
   {
    "type": "Argument declaration",
    "argument type": "Positive integer",
    "key id": "Z144K2",
    "label": {
     "type": "Multilingual text",
     "texts": [
      {
       "type": "Monolingual text",
       "language": "English",
       "text": "right"
      }
     ]
    }
   }
  ],
  "return type": "Positive integer",
  "testers": [],
  "implementation": [
   {
    "type": "implementation",
    "code": {
     "type": "Code",
     "language": "Javascript",
     "code": "Z144K0 = Z144K1 + Z144K2"
    }
   }
  ],
  "identity": "add"
 },
 "left": {
  "type": "Positive integer",
  "value": "2"
 },
 "right": {
  "type": "Positive integer",
  "value": "2"
 }
}
{
 "Z1K1": "Z7",
 "Z7K1": {
  "Z1K1": "Z8",
  "Z8K1": [
   {
    "Z1K1": "Z17",
    "Z17K1": "Z70",
    "Z17K2": "Z144K1",
    "Z17K3": {
     "Z1K1": "Z12",
     "Z12K1": [
      {
       "Z1K1": "Z11",
       "Z11K1": "Z251",
       "Z11K2": "left"
      }
     ]
    }
   },
   {
    "Z1K1": "Z17",
    "Z17K1": "Z70",
    "Z17K2": "Z144K2",
    "Z17K3": {
     "Z1K1": "Z12",
     "Z12K1": [
      {
       "Z1K1": "Z11",
       "Z11K1": "Z251",
       "Z11K2": "right"
      }
     ]
    }
   }
  ],
  "Z8K2": "Z70",
  "Z8K3": [],
  "Z8K4": [
   {
    "Z1K1": "Z14",
    "Z14K3": {
     "Z1K1": "Z16",
     "Z16K1": "Z301",
     "Z16K2": "Z144K0 = Z144K1 + Z144K2"
    }
   }
  ],
  "Z8K5": "Z144"
 },
 "Z144K1": {
  "Z1K1": "Z70",
  "Z70K1": "2"
 },
 "Z144K2": {
  "Z1K1": "Z70",
  "Z70K1": "2"
 }
}

Le résultat de ceci serait :

{
 "type": "positive integer",
 "value": "4"
}
{
 "Z1K1": "Z70",
 "Z70K1": "4"
}
Modèle architectural au plus haut niveau de Wikifonctions.

Les conditions suivantes doivent être remplies pour chaque appel à l’évaluateur de fonction :

  • ce doit être un Objet-Z valide ;
  • il doit être de type Z7/Appel de fonction ;
  • la valeur de la clé Z7K1/Fonction doit être une Z8/Fonction litérale, pas une référence à une Z8/Fonction ;
  • chaque Z17K1/type d’argument doit être d’un type connu par l’évaluateur de fonction ;
  • le Z8K2/type de retour doit être d’un type connu par l’évaluateur de fonction ;
  • les Z8K3/testeurs doivent être une liste vide ;
  • la Z8K4/mise en œuvre doit être une liste avec exactement un élément de type Z14/Mise en œuvre ;
  • seule la clé Z14K3/code de la Z14/Mise en œuvre doit être donnée ;
  • le Z14K3/code doit pointer vers un Z16/Code avec le Z16K1/langage étant Z301/Javascript (pour l’évaluateur de fonction en Javascript – nous réaliserons des évaluateurs de fonction dans d’autres langages et la valeur ici devra être du langage respectif) ;
  • tous les arguments donnés doivent être des littéraux (dans ce cas, les valeurs de Z144K1/gauche et Z144K2/droite).

Au cas où l’appel de fonction ne remplit pas les invariants donnés (ou tout autre chose qui se passe mal), il retournera une Z5/Erreur.

Voir aussi