Abstraktní Wikipedie/Volání evaluátoru funkcí

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.

Abstraktní Wikipedie prostřednictvím e-mailového seznamu Abstraktní Wikipedie na IRC Wikifunkce na Telegramu Wikifunkce na Facebooku Wikifunkce na Twitteru Wikifunkce na Facebooku Wikifunkce na YouTube Webové stránky Wikifunkcí Translate

Toto je příklad volání funkce Evaluátoru funkcí.

Všimněte si, že se předpokládá, že pouze orchestrátor bude přímo volat evaluátor.

Cílem evaluátoru funkcí je, aby mohl být spuštěn bez volání jiných zdrojů dat, databází nebo služeb.

Podívejte se do návrhu architektury, jak orchestrátor a evaluátor spolupracují.

{
 "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"
 }
}

Výsledkem by mělo být:

{
 "type": "positive integer",
 "value": "4"
}
{
 "Z1K1": "Z70",
 "Z70K1": "4"
}
Architektonický model Wikifunkcí na nejvyšší úrovni.

Při každém volání evaluační funkce musí být splněny následující podmínky:

  • musí být platným objektem ZObject;
  • musí být typu Z7/Function call (volání funkce);
  • Z7K1/function (funkce) musí být doslovná Z8/Function (Funkce), nikoli odkaz na Z8/Function (Funkci);
  • každý Z17K1/argument type (typ argumentu) musí být typu, který evaluátor funkce zná;
  • Z8K2/return type (návratový typ) musí být typu, který evaluátor funkce zná;
  • Z8K3/testers (testery) musí být prázdný seznam;
  • Z8K4/implementation (implementace) musí být seznam s přesně jedním prvkem typu Z14/Implementation (Implementace);
  • musí být uveden pouze klíč Z14K3/code (kód) Z14/Implementation (Implementace);
  • Z14K3/code (kód) musí ukazovat na Z16/Code (Kód), přičemž Z16K1/language (jazyk) je Z301/Javascript (pro evaluátor funkcí v Javascriptu. Budeme vytvářet i vyhodnocovače funkcí v jiných jazycích a tam musí být hodnota příslušného jazyka);
  • všechny zadané argumenty musí být literály (v tomto případě hodnoty Z144K1/left a Z144K2/right).

V případě, že volání funkce nesplňuje zadané invarianty (nebo se něco jiného pokazí), vrátí se Z5/Error (Chyba).

Viz též