Абстрактна Вікіпедія/Виклик обчислювача функції
Appearance
Проєкт у Фабрикаторі: #abstract wikipedia
- Це приклад виклику обчислювача функції.
Зверніть увагу, що припущення полягає в тому, що лише оркестратор функцій буде викликати оцінювач функцій безпосередньо.
Мета оцінювача функцій полягає в тому, щоб мати можливість виконуватися без будь-яких викликів до інших джерел даних, баз даних або служб.
Зверніться до ескізу архітектури взаємодії оркестратора та оцінювача, що працюють разом.
{
"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"
}
}
|
Результат цього має бути:
{
"type": "positive integer",
"value": "4"
}
|
{
"Z1K1": "Z70",
"Z70K1": "4"
}
|

Кожен виклик оцінювача функцій повинен виконувати такі умови:
- це має бути дійсний ZObject;
- це має бути звернення типу Z7/Function;
- функція Z7K1/ повинна бути літералом Z8/Function, а не посиланням на Z8/Function;
- кожен тип аргументу Z17K1/ повинен бути типу, відомого оцінювачу функцій;
- тип повернення Z8K2/ повинен бути типу, відомого функції оцінювач;
- Z8K3/тестери повинні бути порожнім списком;
- Z8K4/реалізація повинна бути списком з рівно одним елементом типу Z14/Реалізація;
- повинен бути вказаний лише ключ Z14K3/code Z14/Реалізація;
- Z14K3/код повинен вказувати на Z16/Код, де Z16K1/мова є Z301/Javascript (для оцінювача функцій у Javascript. Ми також створимо оцінювачі функцій іншими мовами, і тут значення має бути відповідною мовою);
- всі надані аргументи повинні бути літералами (у цьому випадку значення Z144K1/left та Z144K2/right).
У випадку, якщо виклик функції не відповідає заданим інваріантам (або щось інше піде не так), він поверне Z5/Помилка.
Див. також
- Модель функції (як заплановано)
- Модель функції (догенерична)
- Огляд нотаток