Wikifunctions
wikifunctionswiki
https://www.wikifunctions.org/wiki/Wikifunctions:Main_Page
MediaWiki 1.45.0-wmf.6
first-letter
Media
Special
Talk
User
User talk
Wikifunctions
Wikifunctions talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
TimedText
TimedText talk
Module
Module talk
Translations
Translations talk
Z6
0
9
195709
187977
2025-06-21T22:48:20Z
SRG372
12739
+sr
195709
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z6"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z6",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z6K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "wartość"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "hodnota"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "värde"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "ערך"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Wert"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "nilai"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "waarde"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "значение"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "valoare"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "قيمة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore"
}
]
}
}
],
"Z4K3": "Z106",
"Z4K4": "Z866",
"Z4K7": [
"Z46"
],
"Z4K8": [
"Z64"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "String"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "অক্ষর সারি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "لکھت"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਲਿਖਤ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Tekst"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Textsträng"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Строка"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "signoĉeno"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Řetězec"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Zeichenkette"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "文字列"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מחרוזת"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Chuỗi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "tekenreeks"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1227",
"Z11K2": "Streng"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "chaîne"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "สตริง"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "cadena de caracteres"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Cadeia de caracteres"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "Metin"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Рядок"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "String"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "niz"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Untaian"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "문자열"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "字符串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "字串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "συμβολοσειρά"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Rentetan"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1434",
"Z11K2": "رينتيتن"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "Zeecheketten"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1288",
"Z11K2": "زنجیرەنووسە"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Stringa"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "merkkijono"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Șir"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "سلسلة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1158",
"Z11K2": "Ниска"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1592",
"Z31K2": [
"Z6",
"Unicode-text",
"Sträng",
"Text"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1048",
"Z31K2": [
"Z6",
"Chuỗi ký tự",
"Chuỗi kí tự",
"Chuỗi chữ",
"Xâu",
"Xâu ký tự"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1003",
"Z31K2": [
"Z6",
"string",
"ristra de caracteres"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1272",
"Z31K2": [
"Z6",
"niska",
"string"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1851",
"Z31K2": [
"Z6",
"สายอักขระ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"Teks"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1643",
"Z31K2": [
"Z6",
"스트링",
"텍스트"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"বর্ণশৈলী",
"অক্ষর শ্রেণী",
"স্ট্রিং",
"শব্দগুচ্ছ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1001",
"Z31K2": [
"Z6",
"سلسلة محارف، سلسلة حروف"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1158",
"Z31K2": [
"Z6",
"стринг"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A sequence of characters, and one of the fundamental Z4/Types available in the Wikifunctions system."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "বর্ণের অনুক্রম; এই উইকির একটি আদি Z4/(উপাত্তের ধরন)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Ciąg znaków, jeden z podstawowych typów (Z4) w systemie Wikifunkcji."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "en serie skrivtecken, grundläggande datatyp i Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "sekvenco de signoj; unu el la fundamentaj Z4/tipoj disponeblaj en la sistemo de Vikifunkcioj"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Posloupnost znaků; jeden ze základních Z4/Typů dostupných v systému Wikifunkcí"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Folge von Zeichen und einer der grundlegenden Typen, die im Wikifunctions-System verfügbar sind"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "רצף של תווים, אחד ה־Z4/סוגים היסודיים ביותר שזמינים בוויקיפונקציות."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "reeks tekens en is een van de fundamentele Z4/types beschikbaar in het Wikifuncties-systeem."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Kiểu dữ liệu thể hiện một dãy ký tự; một trong các kiểu dữ liệu cốt lõi của Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "Une suite de caractères, ainsi qu'un des Z4/Types fondamentaux disponibles dans Wikifunction"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Secuencia de caracteres, y uno de los Z4/Tipos fundamentates de Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Uma sequência de caracteres e um dos Z4/Tipos fundamentais disponíveis no sistema da Wikifunções."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "A sequence of characters, and is one of the fundamental Z4/Types available in the Wikifunctions syst"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ลำดับของตัวอักษร หนึ่งใน Z4/ชนิด พื้นฐานในระบบวิกิฟังก์ชันส์"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Serangkaian karakter; salah satu Z4/Tipe fundamental yang tersedia di sistem Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "문자를 나열한 것으로 위키함수 시스템에서 사용 가능한 기초 Z4/유형의 하나입니다."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Urutan aksara dan salah satu Z4/Jenis asas yang tersedia dalam sistem Wikifungsi."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1434",
"Z11K2": "اوروتن اکسارا دان ساله ساتو Z4/جنيس اساس يڠ ترسديا دالم سيستم ويکيفوڠسي."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1288",
"Z11K2": "زنجیرەیەکە لە نووسەکان، و یەک لە تایپە سەرەکییەکانە (Z4) کە لە سیستمی ویکیفانکشنز بەردەستە."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Una sequenza di caratteri e uno dei tipi fondamentali nel sistema Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "O secvență de caractere și unul dintre tipurile fundamentale Z4/Tipuri disponibile în sistemul Wikifuncții."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "سلسلة من المحارف، وواحدة من Z4/الأنواع الأساسية المتوفرة في نظام ويكي الدوال"
}
]
}
}
t3yy4t2uzou95g41b40iwu7gwq84qel
Z8
0
11
195710
188677
2025-06-21T22:58:07Z
SRG372
12739
+sr-latn, sr-cyrl
195710
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z8"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z8",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z17"
},
"Z3K2": "Z8K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arguments"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "argumenty"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "আর্গুমেন্টসমূহ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "منگݨے"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਮੰਗਣੇ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "参数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "ארגומנטים"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Argumente"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "arguments"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "daftar argumen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "argumenten"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "引數"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "arguments"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "argomenti"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z4",
"Z3K2": "Z8K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "return type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "typ wyjścia"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ফলাফলের ধরন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "قسم پیندی"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਕਿਸਮ ਪੈਂਦੀ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "返回类型"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "svarstyp"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "סוג מוחזר"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Rückgabetyp"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "return type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "tipe keluaran"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "retourneertype"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "回傳類型"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "renvoie le type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "tipo di ritorno"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z20"
},
"Z3K2": "Z8K3",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "testers"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "przypadki testowe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরীক্ষার ক্ষেত্রসমূহ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "جاچݨ والے"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਜਾਚਣ ਵਾਲੇ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "测试用例"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "tester"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "בודקים"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Tester"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "testers"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "penguji"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "tests"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "tests"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "test"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z14"
},
"Z3K2": "Z8K4",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "implementations"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "implementacje"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "বাস্তবায়নসমূহ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "چلائیاں"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਚਲਾਈਆਂ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "实现"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "implementeringar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מימושים"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Implementierungen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "implementations"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "implementasi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "implementaties"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "實現"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "implémentations"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "implementazioni"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z8",
"Z3K2": "Z8K5",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "identity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "tożsamość"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিচয়"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "شناخت"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਸ਼ਿਨਾਖ਼ਤ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "身份"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "identitet"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "זהות"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Identität"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "identity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "pengenal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "identiteit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "identité"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "identità"
}
]
},
"Z3K4": "Z41"
}
],
"Z4K3": "Z108",
"Z4K7": [
"Z46"
],
"Z4K8": [
"Z64"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Function"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ফাংশন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "funkcija"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਕਰਨੀ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "کرنی"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Funkcja"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Funktion"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Функция"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Funkce"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Funktion"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "関数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "פונקציה"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Hàm"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "functie"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1227",
"Z11K2": "Funksjon"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "fonction"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ฟังก์ชัน"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "Fonksiyon"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Função"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Función"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Функція"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1696",
"Z11K2": "વિધેય"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "Function"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Funzione"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1298",
"Z11K2": "Funzioni"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "funktio"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Fungsi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "函数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "函數"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "συνάρτηση"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "Funktioun"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Ọrụ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1709",
"Z11K2": "Funkcija"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1037",
"Z11K2": "Função"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Funcție"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "دالة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "함수"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1394",
"Z11K2": "Funkcija"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Функција"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"অপেক্ষক",
"গননাযান্ত্রিক কার্য"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A concept of a computable resource, which through its Z14/Implementations and Z20/Testers can let you make a calculate or perform some other task."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "Z14/বাস্তবায়ন এবং Z20/পরীক্ষার ক্ষেত্র সমূহ দ্বারা কোনো একটি বিশেষ কাজ করানোর গননাযান্ত্রিক পদ্ধতি।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Obiekt, reprezentujący pewne przekształcenie. Po połączeniu z implementacją (Z14) może być wywołany."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Koncept, prostřednictvím jehož Z14/Implementací a Z20/Testerů můžete provést výpočet či jinou úlohu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Konzept einer berechenbaren Ressource zur Berechnung oder Durchführung einer Aufgabe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Khái niệm chỉ tài nguyên tính toán được và có thể thực hiện một tác vụ nào đó"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Um conceito de recurso computável que, através de suas Z14/Implementações e Z20/Testadores, pode permitir que você faça um cálculo ou execute alguma outra tarefa."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "A concept of a computable resource, which through its Z14/Implementations and Z20/Testers can let yo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ทรัพยากรที่ใช้คำนวณได้ สามารถใช้คำนวณและปฏิบัติภารกิจผ่าน Z14/การนำไปปฏิบัติ และ Z20/ชุดทดสอบ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Suatu konsep sumber daya yang bisa dikomputasi, bisa dipakai untuk menghitung atau melakukan tugas lain melalui Z14/Implementasi dan Z20/Pengujinya"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "concept van berekenbare bron, om via Z14/implementaties en Z20/tests een taak uit te voeren"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מושג של משאב בר־חישוב שבאמצעות Z14/מימוש ו־Z20/בודקים יכול לאפשר לך לחשב משהו או לבצע משימה אחרת."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Концепція обчислюваного ресурсу, який через свої Z14/Реалізації і Z20/Тести може дозволити вам виконувати обчислення або інші завдання."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Echiche nke akụrụngwa nwere ike ịgbakọ, nke site na Z14 / Mmejuputa ya na Z20/Testers nwere ike ime ka ị gbakọọ ma ọ bụ rụọ ọrụ ọzọ."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "un concept de ressource calculable qui, grâce à ses Z14/implémentations et Z20/cas de test, peut permettre d'effectuer un calcul ou d'effectuer une autre tâche."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Un concept de resursă calculabilă care, prin intermediul aplicațiilor sale Z14/Implementări și Z20/Cazuri de test, vă poate permite să efectuați un calcul sau să îndepliniți o altă sarcină."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "مفهوم لمورد قابل للحساب، يمكنك من خلال Z14/تنفيذاته و Z20/حالات اختباره أن تجري حسابًا أو أن تقوم بمهمة أخرى ما."
}
]
}
}
nxqbbj3zjtyt95qhe40g9pmvayj4rlb
Wikifunctions:Project chat
4
1184
195712
195442
2025-06-22T00:45:42Z
DMartin (WMF)
24
/* Indicating unknown day/month values in Day of Roman Year */ Reply
195712
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
slozgrob1rjjugphrc2tbyphbcbvciv
195733
195712
2025-06-22T06:31:54Z
DMartin (WMF)
24
/* Indicating unknown day/month values in Day of Roman Year */ Reply
195733
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
r58elvskrz7u6x24rjlv9mimo3oy5xz
195734
195733
2025-06-22T06:32:48Z
Laura240406
11557
/* Raw type editing */ new section
195734
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
== Raw type editing ==
I've recently requested to change some types of functions I created (see topic above) since I don't have the rights to do so myself. I've just realized that I can change the types by manually editing the JSON of a function with [[User:Feeglgeef/wikilambda_editsource.js|this userscript]].
I ran into a similar Integer vs Natural number issue but I managed to [https://www.wikifunctions.org/wiki/Z25557?uselang=en&diff=prev&oldid=195730 change it myself].
Is this intentional or is this a security issue? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:32, 22 June 2025 (UTC)
djcodcql3g5w7itkvaq641j88qm2vyt
195735
195734
2025-06-22T06:34:02Z
Laura240406
11557
/* Raw type editing */ Reply
195735
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
== Raw type editing ==
I've recently requested to change some types of functions I created (see topic above) since I don't have the rights to do so myself. I've just realized that I can change the types by manually editing the JSON of a function with [[User:Feeglgeef/wikilambda_editsource.js|this userscript]].
I ran into a similar Integer vs Natural number issue but I managed to [https://www.wikifunctions.org/wiki/Z25557?uselang=en&diff=prev&oldid=195730 change it myself].
Is this intentional or is this a security issue? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:32, 22 June 2025 (UTC)
:btw I've only done this to functions where I wrote all of the implementations and tests and that aren't connected or used anywhere as to not cause any disruption [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:34, 22 June 2025 (UTC)
m1efvdvo3f55n5mveqajab0gnz3omh2
195740
195735
2025-06-22T07:04:32Z
Bunnypranav
9976
/* Raw type editing */ Reply
195740
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
== Raw type editing ==
I've recently requested to change some types of functions I created (see topic above) since I don't have the rights to do so myself. I've just realized that I can change the types by manually editing the JSON of a function with [[User:Feeglgeef/wikilambda_editsource.js|this userscript]].
I ran into a similar Integer vs Natural number issue but I managed to [https://www.wikifunctions.org/wiki/Z25557?uselang=en&diff=prev&oldid=195730 change it myself].
Is this intentional or is this a security issue? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:32, 22 June 2025 (UTC)
:btw I've only done this to functions where I wrote all of the implementations and tests and that aren't connected or used anywhere as to not cause any disruption [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:34, 22 June 2025 (UTC)
::I think anyone registered user can edit functions which do not have connected implementations. Functioneers can in practice also edit the types of other functions, since they can disconnect the impl.s, and then edit it. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:04, 22 June 2025 (UTC)
4shhidkx8lgswyeur7dqqj3ic5ns38x
195741
195740
2025-06-22T07:12:21Z
Laura240406
11557
/* Raw type editing */ Reply
195741
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
== Raw type editing ==
I've recently requested to change some types of functions I created (see topic above) since I don't have the rights to do so myself. I've just realized that I can change the types by manually editing the JSON of a function with [[User:Feeglgeef/wikilambda_editsource.js|this userscript]].
I ran into a similar Integer vs Natural number issue but I managed to [https://www.wikifunctions.org/wiki/Z25557?uselang=en&diff=prev&oldid=195730 change it myself].
Is this intentional or is this a security issue? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:32, 22 June 2025 (UTC)
:btw I've only done this to functions where I wrote all of the implementations and tests and that aren't connected or used anywhere as to not cause any disruption [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:34, 22 June 2025 (UTC)
::I think anyone registered user can edit functions which do not have connected implementations. Functioneers can in practice also edit the types of other functions, since they can disconnect the impl.s, and then edit it. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:04, 22 June 2025 (UTC)
:::hmm okay yeah makes sense, the option to edit types of unconnected functions doesn't appear for me for some reason [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 07:12, 22 June 2025 (UTC)
ggkmmp1fdbe4homs2et763bimfehono
195744
195741
2025-06-22T07:24:12Z
Bunnypranav
9976
/* Raw type editing */ Reply
195744
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
== Raw type editing ==
I've recently requested to change some types of functions I created (see topic above) since I don't have the rights to do so myself. I've just realized that I can change the types by manually editing the JSON of a function with [[User:Feeglgeef/wikilambda_editsource.js|this userscript]].
I ran into a similar Integer vs Natural number issue but I managed to [https://www.wikifunctions.org/wiki/Z25557?uselang=en&diff=prev&oldid=195730 change it myself].
Is this intentional or is this a security issue? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:32, 22 June 2025 (UTC)
:btw I've only done this to functions where I wrote all of the implementations and tests and that aren't connected or used anywhere as to not cause any disruption [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:34, 22 June 2025 (UTC)
::I think anyone registered user can edit functions which do not have connected implementations. Functioneers can in practice also edit the types of other functions, since they can disconnect the impl.s, and then edit it. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:04, 22 June 2025 (UTC)
:::hmm okay yeah makes sense, the option to edit types of unconnected functions doesn't appear for me for some reason [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 07:12, 22 June 2025 (UTC)
::::I managed to change it for [[Z25557]] using my alt which does not have functioneer, see [[Special:Diff/195742]]. You go into ''Edit source'' and then just enter the new type under each input/output's ''Type'' dropdown. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:24, 22 June 2025 (UTC)
5ht6kzicmx5wfsrv72bevyfx1sgjcv6
195830
195744
2025-06-22T09:18:58Z
Laura240406
11557
/* Raw type editing */ Reply
195830
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
== Raw type editing ==
I've recently requested to change some types of functions I created (see topic above) since I don't have the rights to do so myself. I've just realized that I can change the types by manually editing the JSON of a function with [[User:Feeglgeef/wikilambda_editsource.js|this userscript]].
I ran into a similar Integer vs Natural number issue but I managed to [https://www.wikifunctions.org/wiki/Z25557?uselang=en&diff=prev&oldid=195730 change it myself].
Is this intentional or is this a security issue? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:32, 22 June 2025 (UTC)
:btw I've only done this to functions where I wrote all of the implementations and tests and that aren't connected or used anywhere as to not cause any disruption [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:34, 22 June 2025 (UTC)
::I think anyone registered user can edit functions which do not have connected implementations. Functioneers can in practice also edit the types of other functions, since they can disconnect the impl.s, and then edit it. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:04, 22 June 2025 (UTC)
:::hmm okay yeah makes sense, the option to edit types of unconnected functions doesn't appear for me for some reason [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 07:12, 22 June 2025 (UTC)
::::I managed to change it for [[Z25557]] using my alt which does not have functioneer, see [[Special:Diff/195742]]. You go into ''Edit source'' and then just enter the new type under each input/output's ''Type'' dropdown. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:24, 22 June 2025 (UTC)
:::::ahh okay thanks
:::::It looks like the "Edit source" mode is different from the usual label editing mode when you click on the pen icon. That's what confused me. [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 09:18, 22 June 2025 (UTC)
6otkuodfyx2tt8qyavv6anzux0kx9qm
195831
195830
2025-06-22T09:19:50Z
Bunnypranav
9976
/* Raw type editing */ Reply
195831
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1}}}}
== proposed Reader and Display functions for Byte Type ==
I suggest we use the following functions as a reader and display function for the Byte Type:
* {{Z|Z22866}}
* {{Z|Z22887}}
Feel free to add an implementation to either with a language configuration if you would like to convert to a different numeral script. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:40, 27 February 2025 (UTC)
:How do you feel about displaying in three or more formats: hex, binary, decimal and (maybe) octal? Something like “F1 (hex), 11110001 (binary), 241 (decimal), 361 (octal)” or “F1 [16], 11110001 [2], 241 [10], 361 [8]”? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:09, 2 March 2025 (UTC)
::They all seem too long IMO. Imagine how they would show up in rendered displays (e.g. on Tests). I agree that choosing a base has no right answer, but I think choosing any is still better than all. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:21, 2 March 2025 (UTC)
:::Ah, yes… you’re right, of course! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 23:24, 2 March 2025 (UTC)
:Can we proceed with this one? In particular the reader will be useful to accept a wider range of inputs. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:31, 26 March 2025 (UTC)
::{{ping|DVrandecic (WMF)}} I know you've been busy, and am sorry to be pushy, but you asked for this [[Wikifunctions:Status_updates/2025-02-26|about 6 weeks ago]], and I tried to get it done the next day. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:32, 14 April 2025 (UTC)
:::@[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] ping again. The bot wants to archive this section. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:46, 16 May 2025 (UTC)
::::@[[User:99of9|99of9]] Thank you so much for your patience! The read and write function have been now set on [[Z80|Byte]] as per your proposal. Everyone, feel free to test it, I tried it a bit and it works like a charm! Thank you for all the work. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 09:33, 16 May 2025 (UTC)
:::::Thanks for clearing some important backlog. It's great to have you back. If you have more capacity, I sent a reminder of a few trickier backlogs for you via @[[User:Sannita (WMF)|Sannita (WMF)]] at [https://t.me/Wikifunctions/25377]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:56, 21 May 2025 (UTC)
::::::Hi @[[User:99of9|99of9]]! I checked with Sannita, and I am trying to find the other topics you listed. One is about [[Wikifunctions:Project chat/Archive/2024/06#Revisiting community %22maintainer%22 rights|connecting tests to built-ins]], and the other two seem about the converter for floating point numbers. I haven't caught up on the chat yet, is there a place I can read up on the floating point issues (besides going through the chat, which I will do some day)? --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 14:46, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/24417 April 7th] “I've just been investigating Z21923 and am now confident that the float64 converters to code are not dealing with the special case of subnormal numbers. When the exponent is -1023 (just this specific value), the mantissa should not get the 1+ in line 47 of [[Z20875]]. Similar omission in the JS converter.
:::::::“Then in [[Z20885]] it looks like like 83 should not subtract the 0.5 for the specific case of the exp being -1023 (or actually -1022 at that stage, since it is decremented in the following line)” [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:30, 26 May 2025 (UTC)
::::::::Hi @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], yes, thanks @[[User:GrounderUK|GrounderUK]] that's all I wrote about #3. If you need more info let me know, but I learned most of what I know from wiki. Most relevant here is [[:w:Double-precision_floating-point_format#Exponent_encoding]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:12, 26 May 2025 (UTC)
:::::::[https://t.me/Wikifunctions/22480 February 2nd] is #4: "I've realised that the question at the end of the [[Wikifunctions:Status_updates/2025-01-29|FOTW section]] I wrote is now more urgent. The question was "Should special values return with their other (usually disregarded) keys matching the values of the sign, mantissa and exponent in the IEEE 754 binary representations?". It's now urgent because the type reader is now hardcoding the representation of the special values in every test that involves them (e.g. [[Z22081]]). Perhaps obviously by posing the question, I favour returning values for all keys that match how they appear in the binary representations." This received some concurrence, and I haven't seen anyone against it. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:15, 26 May 2025 (UTC)
== proposed Display function for Gregorian calendar month Type ==
I suggest we use {{Z|Z24086}} as a display function for the {{Z|Z16098}} Type. Similar to [[#proposed Display functions for Day of the week Type]], this display function calls for a Wikidata label of the object, and has elaborate and flexible handling of fallback languages if the editing language variant does not have a corresponding Wikidata label.
Types without display functions aren't supported when called from Wikipedias, so IMO it is a priority that we continue to connect display functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:13, 30 April 2025 (UTC)
:@[[User:99of9|99of9]]: Thank you! Done so! Again, thank you for your patience and for shepherding this change. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 15:06, 18 May 2025 (UTC)
{{tracked|T394769}}
::For some reason now {{Z|Z24086}} doesn't work [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:45, 18 May 2025 (UTC)
:::Good pickup. I can't see anything wrong, and have tested the functions that the composition calls. Likely a bug? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:09, 19 May 2025 (UTC)
::::Weird. It worked yesterday when I was testing it out. I'll let the team know. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 11:27, 19 May 2025 (UTC)
:::::It looks like this is now working again. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:02, 11 June 2025 (UTC)
== Solvers (and color spectrum reconstruction.) ==
I am posting here as I wasn't sure how to define it formally for requesting directly.
A specific spreadsheet used for reconstructing approximate 'reflectance' data from RGB triplets, uses the Generalized Reduced Gradient(GRG) solver from Excel. This doesn't exist in Libre Office.
That spreadsheet is linked from ( http://scottburns.us/reflectance-curves-from-srgb-10/.(Burns,2025) The author also links - http://scottburns.us/matlab-octave-and-python-source-code-for-refl-recon-chrom-adapt/ (I don't see a license indication, but the authors are approachable, and have licensed some of their online contributions under Creative Commons, and I've already suggested they look into writing a contribution for Wikiversity under Open Access.)
My understanding of what the GRG does is that for a range of input values, a function is setup for the results set, with the sum of the intermediate steps having to meet some 'goal'(in the linked use case a 'minimized' value, these intermediate calculations being used to generate a set of finalised 'results'.
In the use case for (Burns,2025), the results set obtained through the GRG approach, is further constrained. Namely that an XYZ color, obtained from applying CIE observer functions to the generated 'reflectance' data must match a pre determined input XYZ color, although obtained by applying a suitable conversion from an sRGB triplet).
Would it be possible for some kind of 'solver' function/algorithim to be considered for Wikifunctions, to allow for the kinds of approaches taken in Burns, to be developed or expanded upon?
I appreciate the specific use case is a bit niche, and implentations are possibly beyond me, but having 'solvers' would be useful I think.
As an aside, having Wikifunctions able to make use reconstructed 'refelctance' data for typical RGB triplets might prove useful long term, especially if the approach can be extended to approximate for any 'color' ( such as xyz spaces recently added in CSS and recent browsers). A different author (Ronald Van Winjen, 2025), also uses approximated reflectance curves to implement a 'pigment' style subtractive color mixing 'function' as Spectral.js (https://github.com/rvanwijnen/spectral.js).
(That code is under MIT license, and uses a faster but possibly less specfic approximation technique.)
My apologies if I sound a bit more formalised in places, and if opthers are able to improve the referencing , feel free.
[[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 08:59, 5 June 2025 (UTC)
:Many solvers use something like [[:w:Newton's method]]. We have a few functions that attempt something like this ([[Z24539]], [[Z24553]]) which you could have a look at to incorporate into your colour analysis field. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:04, 6 June 2025 (UTC)
: Actual coding is beyond my expertise, but I figured I'd put the suggestion down for future reference. In Excel what it's doing is 'guessing' for an entire set of vlaues and tweaking those at goes I think. The estimation method you linked is for a single value, not a constrained set I think. [[User:ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) 11:22, 6 June 2025 (UTC)
== A guide to easily implement a lenient Gregorian calendar date reader ==
I have created [[User:Dv103/Writing Gregorian calendar date readers|a guide]] on how to implement a specialisation of {{Z|Z20808}} for new languages (since for now it is specialised only for English, Italian and Dagbani, while all the other languages have to rely on the suboptimal [[Z23976|generic reader]]). I hope it is easy to understand (otherwise let me know). At the end I also added the instructions on how to implement a localised version of the function {{Z|Z24990}}, even if is not yet the {{Z|Z20342}} reading function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:09, 9 June 2025 (UTC)
:This is fantastic - those implementations can be a bit intimidating! I hope we can set the read/display for Z20342 soon. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:59, 9 June 2025 (UTC)
== proposed Read and Display functions for Day of Roman Year ==
I suggest we use the following functions as a read and display function for the {{Z|Z20342}} Type:
* {{Z|Z24990}}
* {{Z|Z22941}}
The reader is intended to be as lenient as possible, but splits by language for specific month names and ambiguity. If there are other possible input formats, feel free to extend it to include them.
The display is configured by language. Choose the function appropriate to your language!
Thanks [[User:Dv103]] for all the work on the read functions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:01, 11 June 2025 (UTC)
:@[[User:DMartin (WMF)|DMartin (WMF)]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:51, 17 June 2025 (UTC)
::These look good to me, and I've added them to the definition of {{Z|Z20342}}. Thanks to both of you for making them available! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:52, 19 June 2025 (UTC)
:::Thanks! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:56, 19 June 2025 (UTC)
== Indicating unknown day/month values in Day of Roman Year ==
In [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year] (which is used by Gregorian calendar date), to my knowledge there is no designated way to record an unknown day or month. The AW team is currently writing built-in code that instantiates Gregorian date/time from Wikidata's "time" datatype, which frequently includes zeros to indicate unknown day/month. So far we are thinking to simply insert the Natural number 0 for <code>Z20342K2</code> for an unknown day (and there were already comments that 0 values should be allowed on the [[f:Wikifunctions:Type_proposals/Day_of_Roman_year|type proposal page]]). For an unknown month, we are planning to insert <code>Z24/void</code> for <code>Z20342K1</code>. (Technically this is a bit of a cheat, but it will become fully legitimate once union types are supported.) The use of <code>Z24/void</code> in <code>Z20342K1</code> might call for updates to functions that use [https://www.wikifunctions.org/view/en/Z20342 Day of Roman year]; haven't found time to check on this.
Thoughts on these 2 choices? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:16, 11 June 2025 (UTC)
:This is going to cause trouble no matter what we do! I didn't notice this in your [[Wikifunctions:Type proposals/Wikidata time|Wikidata time Type proposal]] until now, so thanks for raising it here. The verdict on [[Wikifunctions:Type_proposals/Day_of_Roman_year]] was not to support 0 (certainly not as the month!?), so we have gone headlong without it. Only one/two of our [[Wikifunctions:Catalogue/Date_operations#Day_of_Roman_year|DORY functions]] even have a well-defined output if an input is unknown (and one of those is casting back to {{Z|Z16098}}). These uncertainties only really make sense within an overall Wikidata time, so we may be able to use the precision to cleverly to ensure we never call a DORY function when its value is invalid/unknown. I'll think more carefully about this over the next few days, but wanted to express my caution quickly. P.S. are the new types you just dropped open for action? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:40, 12 June 2025 (UTC)
::Thanks for mentioning. I didn't actually expect them to already be deployed this week. I think it's okay to start using them, but best not to rush ahead until after the built-in code that imports these types, from Wikidata content, gets deployed (which probably will be next week). It's possible final review and testing of this code might suggest another refinement or 2 in the types, but at present that doesn't seem too likely. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:12, 12 June 2025 (UTC)
::Hi @[[User:99of9|99of9]] and all, Any new thoughts about the issue of unknown day/month values? Most likely the new code that instantiates Day of Roman Year will be deployed tomorrow. So if someone creates a function that fetches Wikidata content and then calls existing functions for ''Day of Roman Year'', those functions could break. So the deployment could be seen as encouragement for updating the relevant functions, assuming we are comfortable with the choices for representing unknown values (mentioned above). Another option would be to omit Wikidata statements that contain date/time with unknown month or day, for now, but there are many of these so that would be a loss. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 15:58, 17 June 2025 (UTC)
:::Go ahead with your plan. Many of the existing functions will need to return errors anyway, but I'll have a go at updating any that can sensibly be updated. This will be an interesting experiment with effectively optional parameters. I assume you saw @[[User:GrounderUK|GrounderUK]]'s caution somewhere else about void behaviour? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:45, 18 June 2025 (UTC)
::::Thanks. I saw a comment indicating that we should take care that the void value isn't interpreted as an error; is that what you are referring to? That shouldn't be a problem. That's not the "meaning" of the void value. It is true, when the envelope comes back with void as the function call return, that happens when the function call encountered an error condition. But that's just the use of void in that context, and void doesn't actually mean "error"; it just means nothing here; no value returned. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 04:30, 18 June 2025 (UTC)
:::::Okay thanks, let's try it then! --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:55, 18 June 2025 (UTC)
:The built-in code that instantiates Gregorian date/time from Wikidata content has been deployed, and we see an expected error message for statements with unknown (void) month. Looks like an easy thing to fix; i'm going to go ahead and update ''Z22993 / date as English "Month day" string'', as follows: If the month value is void, return the string "unknown"; else if the day value is 0, return just the English name of the month; else do what it currently does. (I don't expect to have time to fix other languages, but I'm eager to do a bit of this because I need more experience with read/display functions.) [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 23:54, 20 June 2025 (UTC)
::That's done now, but my updated implementation is still not working for month = void. Not sure why; need to investigate further. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 01:41, 21 June 2025 (UTC)
:::To me it seems to work. How should we handle a date with a known day but an unknown month?
:::And we should modify converters from and to code in order to handle also unknown dates. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:23, 21 June 2025 (UTC)
::::Yes, for me it also is working now; that is, I see "unknown" for the day part of Gregorian calendar date. (Note, however, for the record we are getting occasional "Something went wrong" messages from Natural number and Rational number display functions, as noted in the [[f:Wikifunctions:Status_updates/2025-06-21|latest newsletter]]. I don't think that's a problem with their implementations though.)
::::Regarding known day but unknown month – thanks for mentioning. I've no idea if that ever occurs in Wikidata, but I think we might as well allow for it. How about if we make the English display function say "day n of an unknown month"? If there's no objection I'll make that change.
::::Yes, I agree we should modify the converters. Right now I'm planning to focus on the affected read/display functions, and then try to arrange for read/display functions for the new Wikidata-based types for time, quantity, and geo-coordinates. Other folks, please feel free to update the affected converter functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 00:45, 22 June 2025 (UTC)
:Hmm, I notice there are about 24 functions that take ''[https://www.wikifunctions.org/view/en/Z20342 Z20342/Day of Roman year]'' as an input. If we use void to indicate "unknown" for ''Z20342K1/month'' (the new behavior of Wikidata fetch functions; see above), all of those 24 functions' implementations should be updated, to do the right thing with the void value. (There are also about 40 functions that take Gregorian month as an input; some of these might need updating to accept void, depending on how they are used.)
:Is this number of updates acceptable? If not, we could still consider this alternative:
:* When an instance of Z20342 coming from Wikidata has an unknown month, just don't create that instance. These instances are always inside Z6061/Wikidata datetime objects, so we could use void as the value of Z6061K1, to indicate "unknown" at that level.
:I didn't realize the use of void in Z20342K1 would impact so many functions. Also, I thought it could be useful to have a convention for unknown month in Z20342. Also, even with this alternative we would still get 0 in Z20342K2, to indicate an unknown day, and that could also call for changes to some of the 24 functions. These things argued for going ahead on the current path, but now I'm somewhat less sure.
:Note: With this alternative, if Wikidata has any values with ''unknown'' month and ''known'' day of month, those values would get discarded - but that seems unlikely.
:@[[User:Dv103|Dv103]], @[[User:DVrandecic (WMF)|DVrandecic (WMF)]], @[[User:99of9|99of9]], and all, any preferences here? Continue to use void for Z20342K1, or adopt this alternative? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 06:31, 22 June 2025 (UTC)
== equality function for Time of day ==
@[[User:DMartin (WMF)|DMartin (WMF)]] Please can you add {{Z|Z25098}} as the equality function for {{Z|Z6060}}? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:58, 12 June 2025 (UTC)
:Okay, that's done. Thank you! [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 17:07, 12 June 2025 (UTC)
== code conversion for Time of day ==
I've written some code conversion functions for {{Z|Z6060}}. The details for this were not discussed in the type proposal [[Wikifunctions:Type_proposals/Wikidata_time]] apart from "We expect to get started by relying on the existing default conversion strategy; something more sophisticated could come later if needed." I've followed that (just three keys for both languages, K1=hours, K2=minutes, K3=seconds). But if anyone knows of a more suitable in-code representation of 24 hour times, please speak now, because IMO it is very challenging to change the code conversion after many code implementations have been written. My draft conversion functions are:
* {{Z|Z25175}}
* {{Z|Z25176}}
* {{Z|Z25177}}
* {{Z|Z25178}}
Since staff have usually written our conversion functions, I'm specifically hoping that @[[User:DMartin (WMF)|DMartin (WMF)]] and @[[User:DVrandecic (WMF)|DVrandecic (WMF)]] @[[User:Denny|Denny]] will have a chance to review and discuss these. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 05:54, 13 June 2025 (UTC)
:A "native" time-of-day type for JavaScript, [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime <code>Temporal.PlainTime</code>], is currently <q>recommended for implementation</q> meaning it will be standardised as soon as Chrome and Safari finish their implementations. I'm guessing it's not available here either. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 09:48, 13 June 2025 (UTC)
::Should be be asking @[[User:DMartin (WMF)|DMartin (WMF)]] for a fourth (optional?) key to represent subseconds? Or maybe the third key should be rational? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 22:27, 13 June 2025 (UTC)
:::Regarding one or more additional keys to represent subseconds, that's easy to do; just didn't know if there would be a demand for that. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:30, 17 June 2025 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Note that we don't run either Chrome or Safari (or Firefox or any other browser) to run user-written code, but QuickJS, so we'll have to evaluate when that will be available. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 13:53, 16 June 2025 (UTC)
:Yes, very happy to have these conversion functions; thanks so much! I didn't have time to review them today but should be able to get to it tomorrow. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:28, 17 June 2025 (UTC)
:The conversion functions look fine to me; thanks again for them. Regarding entering them in the type definition, if it's okay I'd like to hold off another day Or two in case anyone else wants to comment. Denny and one or two others have more experience with conversion functions. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:58, 18 June 2025 (UTC)
== FYI: The fastest way to detect a vowel in a string ==
https://austinhenley.com/blog/vowels.html ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 01:32, 14 June 2025 (UTC)
== equality function for Wikidata quantity ==
@[[User:DMartin (WMF)|DMartin (WMF)]] please can you set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Secondly, is there a reason not to rename it just as "quantity"? I understand that it needs to be structured like this to be consistent with Wikidata, but it seems general enough to use it for quantities from other sources too? [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:26, 16 June 2025 (UTC)
:I wouldn't be so sure about considering it the default type for quantities, mainly because it is quite difficult to do arithmetic with it (how do you multiply the units? Do you have to mantain a database of all the compounds units in Wikidata? What if you need a compound unit that doesn't have a Wikidata item?). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:59, 16 June 2025 (UTC)
::How about "quantity with units" then? I'm not giving up on processing units, but all the questions you ask are certainly challenging. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:22, 16 June 2025 (UTC)
:::I don't know how we should call {{Z|Z6010}}, but to process units I think it is necessary to create a new type to actually represents units in a way that can be worked with. [[Wikifunctions:Type proposals/SI units]] should be a good starting point (even if, as I already mentioned in the comments section of the proposal, I think that it should be better to support all the units, even non-SI ones). [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:34, 16 June 2025 (UTC)
::::Yes, I've been thinking about your challenge to support all the units. I'm still hoping we can support many units using the statements on the Wikidata items, together with some lookup tables. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:56, 16 June 2025 (UTC)
:::::I actually have in mind an alternative model to represent all the units. When I have time I'll try to write it down. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:04, 16 June 2025 (UTC)
::If there's going to be a ranged quantity without units, then maybe we should be using that as the first key for this Type. Gradually building the hierarchy up like we do for the dates. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 08:23, 16 June 2025 (UTC)
:::I have already tried to propose [[Wikifunctions:Type proposals/Value with error]]. It actually represents a concept that is a bit different than the Wikidata ranged quantity, since the ranged quantity defines the bounds whithin which the real value is surely placed (at least, this is the intrepretation I understood from the documentation, but maybe I'm wrong), while the value with error would represent the gaussian error of the value. Even if those two concept seem very similar, they are actually different, and behave very differently in mathematical operations. Both those concept can be useful in real life; in science, the gaussian error is usually used, while the maximum error is useful in many ingegneristic environments when you need precice bounds. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 08:45, 16 June 2025 (UTC)
::::The bounds in Wikidata are sometimes used to represent precise bounds but sometimes used to represent statistical uncertainties (one sigma or two?). To be clearer they could have qualifiers attached, but I haven't looked into that deeply. Your proposed Value with error is a simpler structure anyway, assuming symmetric errors. I'm not sure which would get more use. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 12:53, 16 June 2025 (UTC)
:::::In Wikidata I've seen both usages without qualifiers, so when we use Wikidata values in Wikifunctions it's our duty to interpret the data correctly. My proposal has a deribelately simple structure, since it's the current standard for scientific calculations: it's easier to handle and most of the times it's the better we can do (we usually have very little information about the error itself, and have no idea about its asymmetry). In science, the convention is to consider as the error the width of 1 sigma (meaning that we think that the probability of the real value being inside the error is about 2/3).
:::::That said, in an ideal world both error should be used in the right contexts, but (as Wikidata proves) in real life those two concepts are many times conflated, and this is why I think we should be very cautious when handling errors. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:22, 16 June 2025 (UTC)
::Regarding {{Z|Z6010}}, currently it's declared to represent units as Wikidata item references (Z6091), but it could be loosened up. The Wikidata documentation allows for the value of <code>unit</code> to be any IRI. So far I've only encountered values that refer to Wikidata items, but if there are other IRIs we could just import them as strings. So sometimes the unit property might have a Wikidata item reference, and other times a string. Would that be helpful? [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 19:14, 16 June 2025 (UTC)
:::Personally I'd prefer not to loosen it unless Wikidata are genuinely using other IRIs. This is already a complex time to deal with, and the units will be the trickiest bit to deal with well, but while they are QIDs we have a good chance of extracting more info from Wikidata statements about them. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:31, 17 June 2025 (UTC)
::::Sounds good; I agree, at least for now. However, for now if we receive a Quantity from Wikidata having an IRI that's not an entity reference, the statement containing that Quantity will be dropped (not imported). I've put in logging statements to alert the team to any such cases that come across. Also, I've made a ticket to add warnings that come back to the UI in the function call metadata (Details). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:20, 17 June 2025 (UTC)
:::::Sounds good for now. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:14, 17 June 2025 (UTC)
:I set {{Z|Z25286}} as the equality function for {{Z|Z6010}}. Thanks! Regarding the name of the type, yeah I briefly considered naming it "quantity". After a bit of discussion we felt like we shouldn't claim that most general name for something that was pretty clearly tied to Wikidata structure. That is, we figured things could evolve towards recognizing a need for something that's more general. Anyway, the labels can easily be changed in future of course. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 05:26, 17 June 2025 (UTC)
::Cheers, that will take a step out of creating tests. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 06:15, 17 June 2025 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #206 is out: Closing the consultation about the location of Abstract Content ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce the closing of the discussion about where to store abstract content, we remind you about our current discussions about types and our next [[:f:Special:MyLanguage/Wikifunctions:NLG_SIG|NLG SIG meeting]], and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:56, 16 June 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=28860768 -->
== Import citation related templates ==
It looks like [[Template:Cite web]] and similar templates are being used on this wiki while they don't exist. Would it be possible to import them from the English Wikipedia? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:35, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]] What do you think is the need of having cite templates here? I do not think that they will be useful, since our project does not host raw wiki content (atleast as of now). <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:38, 17 June 2025 (UTC)
::e.g. to link to a specification but I can also see why it might be unnecessary since one could just link to it normally [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 15:40, 17 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: Thanks for flagging; I've [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Google_Sheets_functions&diff=prev&oldid=194406 removed the one attempted use] of that template. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 18:28, 17 June 2025 (UTC)
== Change integer to natural number request ==
Hey, I've only now noticed that some of the functions I wrote only deal with positive integers and should use {{z|Z13518}} instead of {{z|Z16683}}.
Could someone with sufficient rights change the types of the following functions:
* {{z|Z25404}}
* {{z|Z25376}}
* {{z|Z25416}}
* {{z|Z25419}}
and also delete the following tests since they're pointless now:
* {{z|Z25389}}
* {{z|Z25388}}
Thanks :) [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:21, 19 June 2025 (UTC)
:Hi @[[User:Laura240406|Laura240406]] - Thanks for these contributions! I've just changed each Integer I/O type to Natural number. I didn't look at the implementations, but I assume you will be updating them appropriately. Regarding the tests to delete, there is a procedure for getting something deleted but I'm not completely up to date on that. I think there's a place to list things that should be deleted. If someone has that info handy, please post it here. [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 02:20, 20 June 2025 (UTC)
::thanks [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:21, 20 June 2025 (UTC)
::Just noting here that the deletion has been done per [[Special:Permalink/195269#ChaCha20 tests]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:18, 20 June 2025 (UTC)
== Raw type editing ==
I've recently requested to change some types of functions I created (see topic above) since I don't have the rights to do so myself. I've just realized that I can change the types by manually editing the JSON of a function with [[User:Feeglgeef/wikilambda_editsource.js|this userscript]].
I ran into a similar Integer vs Natural number issue but I managed to [https://www.wikifunctions.org/wiki/Z25557?uselang=en&diff=prev&oldid=195730 change it myself].
Is this intentional or is this a security issue? [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:32, 22 June 2025 (UTC)
:btw I've only done this to functions where I wrote all of the implementations and tests and that aren't connected or used anywhere as to not cause any disruption [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 06:34, 22 June 2025 (UTC)
::I think anyone registered user can edit functions which do not have connected implementations. Functioneers can in practice also edit the types of other functions, since they can disconnect the impl.s, and then edit it. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:04, 22 June 2025 (UTC)
:::hmm okay yeah makes sense, the option to edit types of unconnected functions doesn't appear for me for some reason [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 07:12, 22 June 2025 (UTC)
::::I managed to change it for [[Z25557]] using my alt which does not have functioneer, see [[Special:Diff/195742]]. You go into ''Edit source'' and then just enter the new type under each input/output's ''Type'' dropdown. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:24, 22 June 2025 (UTC)
:::::ahh okay thanks
:::::It looks like the "Edit source" mode is different from the usual label editing mode when you click on the pen icon. That's what confused me. [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 09:18, 22 June 2025 (UTC)
::::::Happy to help :) <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 09:19, 22 June 2025 (UTC)
ly1bkfiff0jnbwkv6q8kg8fkvbrhg4q
Z10000
0
1186
195708
192293
2025-06-21T22:42:02Z
SRG372
12739
195708
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10000"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z10000K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first string"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "prva riječ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "första strängen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "প্রথম অক্ষরসারি "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "erste Zeichenkette"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "pierwszy napis"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1061",
"Z11K2": "første streng"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "první řetězec"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1513",
"Z11K2": "Karakterlánc"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "первая строка"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מחרוזת ראשונה"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1012",
"Z11K2": "ഒന്നാം പദം"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "перший рядок"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "primeira cadeia"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "prima stringa"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "อินพุต 1"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "untaian pertama"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "第一个字符串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "第一個字串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "πρώτη συμβολοσειρά"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1015",
"Z11K2": "tuuli sitiriŋ "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1852",
"Z11K2": "Okeke"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "first string"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1587",
"Z11K2": "xadhig isku xidhid"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "السلسلة الأولى"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1680",
"Z11K2": "Boolean"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "eriri mbụ: Eriri "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1344",
"Z11K2": "ahama a edi kan"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "chuỗi đằng trước"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "première chaîne"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1158",
"Z11K2": "прва ниска"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z10000K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second string"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "druga riječ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "andra strängen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "দ্বিতীয় অক্ষরসারি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zweite Zeichenkette"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "drugi napis"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1061",
"Z11K2": "anden streng"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "druhý řetězec"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1513",
"Z11K2": "Karakterlánc"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "вторая строка"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מחרוזת שנייה"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1012",
"Z11K2": "രണ്ടാം പദം"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "другий рядок"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "segunda cadeia"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "seconda stringa"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "อินพุต 2"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "untaian kedua"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "第二个字符串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "第二個字串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "δεύτερη συμβολοσειρά"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1013",
"Z11K2": "kirtani"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1015",
"Z11K2": "Ayi sitiriŋ "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1852",
"Z11K2": "Dú dámá okeke "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "second string"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "السلسلة الثانية"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1680",
"Z11K2": "Boolean"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "eriri nke abụọ: Eriri "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1344",
"Z11K2": "ahama a ɛto so abien"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "chuỗi đằng sau"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "seconde chaîne"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1158",
"Z11K2": "друга ниска"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z10002",
"Z10001",
"Z10003",
"Z10006",
"Z10007"
],
"Z8K4": [
"Z14",
"Z10005",
"Z12592",
"Z10622",
"Z10004",
"Z14596",
"Z14590",
"Z10621"
],
"Z8K5": "Z10000"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two strings"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "spoji"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "verbinde Zeichenketten"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "sammanfoga texter"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "অক্ষরসারি সংযোগ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "połącz teksty"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1061",
"Z11K2": "sammenkæd strenge"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "zřetězení"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "tekenreeksen samenvoegen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "combinaison de chaînes"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1513",
"Z11K2": "Karakterláncok összefűzése"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "конкатенация"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "שרשור מחרוזות"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "文字列の結合"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1012",
"Z11K2": "പദങ്ങൾ യോജിപ്പിക്കുക"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "об'єднати рядки"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "juntar duas cadeias"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "concatena due stringhe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "เชื่อมสตริง"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "menggabungkan untaian"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "合并字符串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "ένωση συμβολοσειρών"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1013",
"Z11K2": "igiyoyin haɗin gwiwa"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "unir cadena"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1015",
"Z11K2": "Sabiri tuɣira "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1852",
"Z11K2": "Dí sítríngi dámá"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "da awọn gbolohun ọrọ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1587",
"Z11K2": "xadhig isku xidhid"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "انضم إلى السلسلة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1680",
"Z11K2": "Pa'asɛ string la puan"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "jikọọ eriri abụọ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1344",
"Z11K2": "fa nhama abien bom"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "nối hai chuỗi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1158",
"Z11K2": "спој две ниске"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"concatenate",
"combine strings",
"put two strings together",
"string concatenation",
"append a string to another",
"join strings",
"(string, string) → stringstring",
"stringstring"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1272",
"Z31K2": [
"Z6",
"povezi",
"vezi"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1025",
"Z31K2": [
"Z6",
"złącz teksty"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1592",
"Z31K2": [
"Z6",
"konkatenera",
"konkatenering",
"sammanfoga",
"ihopslagning",
"sammanfogning"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1513",
"Z31K2": [
"Z6",
"Karakterlánc-összefűzés",
" Stringösszefűzés"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"concatenar",
"combinar cadeias",
"colocar duas cadeias juntas",
"concatenação de cadeias",
"anexar uma cadeia a outra",
"juntar cadeias",
"(cadeia, cadeia) → cadeiacadeia",
"cadeiacadeia"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"concatenazione di stringhe",
"concatena",
"combina",
"combina stringhe"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"menggabungkan string",
"menggabungkan teks",
"gabungkan untaian",
"gabungkan string",
"gabungkan teks",
"menyambungkan untaian",
"menyambungkan string",
"menyambungkan teks"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"স্ট্রিং যোগ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1827",
"Z31K2": [
"Z6",
"συνένωση",
"δύο συμβολοσειρες μαζί",
"συνδυάσμός συμβολοσειρών"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1430",
"Z31K2": [
"Z6",
"verbinde zwei Zeichenketten",
"zusammenhängen",
"hänge Zeichenketten aneinander",
"verbinde"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"חיבור מחרוזות",
"צירוף מחרוזות"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1344",
"Z31K2": [
"Z6",
"fa nhama bom"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1048",
"Z31K2": [
"Z6",
"kết nối hai chuỗi",
"nối liền hai chuỗi"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1158",
"Z31K2": [
"Z6",
"спајање ниских",
"спој ниске",
"спајање две ниске",
"надовезивање",
"надовезивање ниских",
"надовезивање две ниске"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "দুটি অক্ষরসারিকে একসাথে সংযুক্ত করবে"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "combine two strings without any separation, one after the other"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "uzima dvije riječi i spaja ih"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "hängt die zweite Zeichenkette an die erste"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "slår ihop två textsträngar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "bierze dwa napisy i łączy je w jeden"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "spojí dva řetězce do jednoho"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "combine deux chaînes, l'une après l'autre"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "combineer twee tekenreeksen, de een na de ander"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "שרשור של מחרוזת אחת לשנייה"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "2つの文字列を結合する"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1012",
"Z11K2": "രണ്ട് പദങ്ങൾ യോജിപ്പിക്കാൻ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "соединяет две строки в одну"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "поєднує рядки один за одним"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "combina duas cadeias, uma após a outra"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "unisce due stringhe, una dopo l'altra"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "นำสตริงสองตัวต่อเชื่อมกัน"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "menggabungkan teks pertama dengan teks kedua sesuai urutan masukan"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1013",
"Z11K2": "hada igiyoyi biyu, daya bayan daya"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "combinar dos cadenas, una tras otra"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1015",
"Z11K2": "Laɣim mi sabbu dibaayi, yin yin kam "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1852",
"Z11K2": "di sitirini da ma"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "darapọ awọn okun meji, ọkan lẹhin ekeji"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1587",
"Z11K2": "xadhig isku xidhid"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "مزيج من سلسلتين، واحدة تلو الأخرى"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1680",
"Z11K2": "dikɛ string buyi, ayima ayima"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "jikọta eriri abụọ, otu na nke ọzọ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1344",
"Z11K2": "ka nhama abien bom ka nhama abien bom, biako akyi biako"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1158",
"Z11K2": "спаја две ниске, једну за другу"
}
]
}
}
dd38gy10bbgghwu4rcbixswdw7b5y8f
Wikifunctions:Requests for deletions
4
1696
195714
195271
2025-06-22T03:08:16Z
SpBot
978
archive 2 sections: 2 to [[Wikifunctions:Requests for deletions/Archive/2025/06]] (after section [[Wikifunctions:Requests for deletions/Archive/2025/06#pbkdf2_hmac|pbkdf2_hmac]]) - previous edit: [[:User:Bunnypranav|Bunnypranav]], 2025-06-20 12:17
195714
wikitext
text/x-wiki
<noinclude>__NEWSECTIONLINK__ __FORCETOC__</noinclude>
Functions or implementations or tests which do not work properly, do not meet notability criteria or are duplicates of another object can be deleted. Please nominate items for deletions under the "Requests for deletion" section below.
If it is obvious vandalism, just report it in [[Wikifunctions:Report vandalism]], or ping an [[Special:ListAdmins|administrator]]. Contact can also be made with an administrator on [https://t.me/Wikifunctions Telegram] or IRC [irc://irc.libera.chat/wikipedia-abstract #wikipedia-abstract].
If it is a predefined object (it's ZID is less than 10000), please see [[Wikifunctions:Report a technical problem]].
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|level = 2
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Requests for deletions/Archive/|stripprefix=1}}}}
== is power of 2 ==
Delete {{z|Z15749}}, superseded by {{z|Z25424}}.
I cannot currently edit connected implementations but the old one was broken but the new one passes all tests. [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 10:20, 18 June 2025 (UTC)
:@[[User:Laura240406|Laura240406]]: The first step would be on [[Talk:Z15735]] to get agreement to disconnect the Implementation. Deleting it would come after that point? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 21:21, 18 June 2025 (UTC)
::I mean the old implementation fails 3/4 tests and the new one I created is basically the same with one small change so it passes all 4 tests. I would just replace the old one if I had the rights to do so so I thought that this should be uncontroversial. [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 21:27, 18 June 2025 (UTC)
:::I've connected yours (thanks!) and fixed the broken one in a similar but slightly different way. Let's leave it for now. Once we get functioneer flags for you, this will all be easier. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:06, 19 June 2025 (UTC)
o7iunri7mz2vft73e21xe79h02b8wl2
Wikifunctions:Catalogue
4
3925
195645
195090
2025-06-21T17:25:12Z
Denny
81
195645
wikitext
text/x-wiki
<languages/>
<translate>
<!--T:1-->
This is a '''guided list of functions provided'''. See also the [[<tvar name="1">Special:ListObjectsByType/Z8</tvar>|complete list of functions]] and <tvar name="2">{{ll|Wikifunctions:Suggest a function}}</tvar>.
</translate>
<gallery mode="packed" heights="140" class="skin-invert">
Wikifunctions-logo-logic-operators.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Logic operators|<translate><!--T:2--> Logic operators</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Logic operators|alt=<translate><!--T:3--> A button with the text "Logic operators"</translate>
Wikifunctions-logo-boolean-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Boolean operations|<translate><!--T:4--> Boolean operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Boolean operations|alt=<translate><!--T:5--> A button with the text "Boolean operations"</translate>
Wikifunctions-logo-sign-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Sign operations|<translate><!--T:6--> Sign operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Sign operations|alt=<translate><!--T:7--> A button with the text "Sign operations"</translate>
Wikifunctions-logo-string-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/String operations|<translate><!--T:8--> String operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/String operations|alt=<translate><!--T:9--> A button with the text "String operations"</translate>
Wikifunctions-logo-scientific-functions.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Scientific functions|<translate><!--T:10--> Scientific functions</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Scientific functions|alt=<translate><!--T:11--> A button with the text "Scientific functions"</translate>
Wikifunctions-logo-natural-language.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Natural language operations|<translate><!--T:12--> Natural language</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Natural language operations|alt=<translate><!--T:13--> A button with the text "Natural language"</translate>
Wikifunctions-logo-list-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/List operations|<translate><!--T:14--> List operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/List operations|alt=<translate><!--T:15--> A button with the text "List operations"</translate>
Wikifunctions-logo-character-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Character operations|<translate><!--T:16--> Character operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Character operations|alt=<translate><!--T:17--> A button with the text "Character operations"</translate>
Wikifunctions-logo-number-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Number operations|<translate><!--T:18--> Number operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Number operations|alt=<translate><!--T:19--> A button with the text "Number operations"</translate>
Wikifunctions-logo-date-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Date operations|<translate><!--T:20--> Date operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Date operations|alt=<translate><!--T:21--> A button with the text "Date operations"</translate>
Wikifunctions-logo-time-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Time operations|<translate><!--T:47--> Time operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Time operations|alt=<translate><!--T:48--> A button with the text "Time operations"</translate>
Wikifunctions-logo-wikidata-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Wikidata operations|<translate><!--T:22--> Wikidata operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Wikidata operations|alt=<translate><!--T:23--> A button with the text "Wikidata operations"</translate>
Wikifunctions-logo-persistent-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Persistent object operations|<translate><!--T:24--> Persistent object</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Persistent object|alt=<translate><!--T:25--> A button with the text "Persistent object"</translate>
Wikifunctions-logo-generic-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Generic object operations|<translate><!--T:26--> Generic object</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Generic object operations|alt=<translate><!--T:27--> A button with the text "Generic object"</translate>
Wikifunctions-logo-type-handling.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Type handling|<translate><!--T:28--> Type handling</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Type handling|alt=<translate><!--T:29--> A button with the text "Type handling"</translate>
Wikifunctions-logo-functional-operations.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Functional operations|<translate><!--T:30--> Functional operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Functional operations|alt=<translate><!--T:31--> A button with the text "Functional operations"</translate>
Wikifunctions-logo-programming-functions.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Programming functions|<translate><!--T:32--> Programming functions</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Programming functions|alt=<translate><!--T:33--> A button with the text "Programming functions"</translate>
Wikifunctions-logo-colour-functions.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Colour functions|<translate><!--T:37--> Colour functions</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Colour functions|alt=<translate><!--T:38--> A button with the text "Colour functions"</translate>
Example.svg|[[Special:MyLanguage/Wikifunctions:Catalogue/Quantity operations|<translate><!--T:49--> Quantity operations</translate>]]|link=Special:MyLanguage/Wikifunctions:Catalogue/Quantity operations|alt=<translate><!--T:50--> A button with the text "Quantity operations"</translate>
</gallery>
<translate>
== See also == <!--T:34-->
</translate>
* <translate><!--T:35--> There is an automatic, un-guided list of functions on the [[<tvar name="1">Special:ListObjectsByType/Z8</tvar>|Special page for all objects of type Function (Z8)]]</translate>
* <translate><!--T:47--> <tvar name="1">{{ll|Wikifunctions:Catalogue of functions and implementations}}</tvar> contains a table with statistics on functions.</translate>
<translate>
<!--T:39-->
You can also search for functions with particular types of inputs or outputs, so long as you know the identifier for the type (its “ZID”). For example, you can search for:
</translate>
* [[Special:Search/: "Z8K2 Z22112"|<translate><!--T:40--> Functions returning an explicit Kleenean object</translate>]]
** [[Special:Search/: "Z8K2 Z1K1 Z7 Z7K1 Z881 Z881K1 Z22112|<translate><!--T:41--> or a list of them</translate>]]
** [[Special:Search/: !"Z17K1 Z22112" ("Z8K2 Z22112" OR "Z8K2 Z1K1 Z7 Z7K1 Z881 Z881K1 Z22112")|<translate><!--T:42--> or either, but with no Kleenean input</translate>]]
* [[Special:Search/: "Z17K1 Z22112"|<translate><!--T:43--> Functions expecting an explicit Kleenean object</translate>]]
** [[Special:Search/: "Z17K1 Z1K1 Z7 Z7K1 Z881 Z881K1 Z22112|<translate><!--T:44--> or a list of them</translate>]]
** [[Special:Search/: !"Z8K2 Z22112" ("Z17K1 Z22112" OR "Z17K1 Z1K1 Z7 Z7K1 Z881 Z881K1 Z22112")|<translate><!--T:45--> or either, but not returning a Kleenean object</translate>]]
<translate>
<!--T:46-->
These are searches restricted to the <tvar name="1">{{Z|Z22112}}</tvar> type. On the “Search results” page for any of these searches, just replace “Z22112” with another ZID to see comparable results for other types. More [[<tvar name="2">Special:MyLanguage/Wikifunctions:Find#Using Search</tvar>|information about using Search]] is available.
</translate>
*<translate><!--T:36--> External function lists:</translate>
**{{ll|Wikifunctions:Excel functions}}
**{{ll|Wikifunctions:Functions GREL}}
[[Category:Lists of functions]]
fsv8dw7yno5opiqp4zi590zmhekghoi
Wikifunctions:Administrators' noticeboard
4
9491
195632
195443
2025-06-21T14:27:20Z
Winston Sung
2672
/* Move and deletion request 2025-06-21 */ New topic
195632
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
02xoi78t003uv61iww431nldr1057do
195715
195632
2025-06-22T04:13:10Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 */ New topic
195715
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
dmnoixbkisljta6p3edjp7s6mwa4yd6
195716
195715
2025-06-22T04:18:53Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 (2) */ New topic
195716
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
0509f1khpbv9kwnooycxsj6r35zdfi0
195717
195716
2025-06-22T04:21:53Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 (3) */ New topic
195717
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
k14cseimro88jgffbhq8q6cdpyim3ip
195718
195717
2025-06-22T04:23:55Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 (4) */ New topic
195718
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (4) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/1/zh|wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/1/zh?wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/2/zh|wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/2/zh?wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Userpage/text/zh|action=delete}} Template:Userpage/text/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:23, 22 June 2025 (UTC)
oshn36p12zpr6jdsde347inrzskdw7o
195719
195718
2025-06-22T04:41:00Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 (5) */ New topic
195719
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (4) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/1/zh|wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/1/zh?wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/2/zh|wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/2/zh?wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Userpage/text/zh|action=delete}} Template:Userpage/text/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:23, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (5) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Wikifunctions_updates/zh|action=delete}} Template:Wikifunctions_updates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
5n91ztcfdpha9fqg5e530qfmv93i77s
195720
195719
2025-06-22T04:41:55Z
Winston Sung
2672
/* Deletion request 2025-06-22 */ New topic
195720
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (4) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/1/zh|wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/1/zh?wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/2/zh|wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/2/zh?wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Userpage/text/zh|action=delete}} Template:Userpage/text/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:23, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (5) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Wikifunctions_updates/zh|action=delete}} Template:Wikifunctions_updates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Deletion request 2025-06-22 ==
Delete:
* [{{fullurl:Category:Templates/zh|action=delete}} Category:Templates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
0u5bwcsk336zwvj4ladj1voijwvnf3a
195726
195720
2025-06-22T05:03:20Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 (6) */ New topic
195726
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (4) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/1/zh|wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/1/zh?wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/2/zh|wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/2/zh?wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Userpage/text/zh|action=delete}} Template:Userpage/text/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:23, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (5) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Wikifunctions_updates/zh|action=delete}} Template:Wikifunctions_updates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Deletion request 2025-06-22 ==
Delete:
* [{{fullurl:Category:Templates/zh|action=delete}} Category:Templates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (6) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/1/zh|wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/1/zh?wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/2/zh|wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/2/zh?wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/3/zh|wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/3/zh?wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/4/zh|wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/4/zh?wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/5/zh|wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/5/zh?wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/6/zh|wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/6/zh?wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/7/zh|wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/7/zh?wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/8/zh|wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/8/zh?wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/9/zh|wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/9/zh?wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/10/zh|wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/10/zh?wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/117/zh|wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/117/zh?wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/118/zh|wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/118/zh?wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/119/zh|wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/119/zh?wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/11/zh|wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/11/zh?wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:About/zh|action=delete}} Wikifunctions:About/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:03, 22 June 2025 (UTC)
ecm71kfiwnf34t8a6lcllds0e659v8z
195727
195726
2025-06-22T05:05:31Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 (7) */ New topic
195727
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (4) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/1/zh|wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/1/zh?wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/2/zh|wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/2/zh?wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Userpage/text/zh|action=delete}} Template:Userpage/text/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:23, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (5) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Wikifunctions_updates/zh|action=delete}} Template:Wikifunctions_updates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Deletion request 2025-06-22 ==
Delete:
* [{{fullurl:Category:Templates/zh|action=delete}} Category:Templates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (6) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/1/zh|wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/1/zh?wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/2/zh|wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/2/zh?wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/3/zh|wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/3/zh?wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/4/zh|wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/4/zh?wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/5/zh|wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/5/zh?wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/6/zh|wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/6/zh?wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/7/zh|wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/7/zh?wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/8/zh|wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/8/zh?wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/9/zh|wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/9/zh?wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/10/zh|wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/10/zh?wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/117/zh|wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/117/zh?wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/118/zh|wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/118/zh?wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/119/zh|wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/119/zh?wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/11/zh|wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/11/zh?wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:About/zh|action=delete}} Wikifunctions:About/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:03, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (7) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:Design/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:Design/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/1/zh|wpNewTitleMain=Translations:Wikifunctions:Design/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/1/zh?wpNewTitleMain=Translations:Wikifunctions:Design/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/2/zh|wpNewTitleMain=Translations:Wikifunctions:Design/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/2/zh?wpNewTitleMain=Translations:Wikifunctions:Design/2/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/3/zh|wpNewTitleMain=Translations:Wikifunctions:Design/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/3/zh?wpNewTitleMain=Translations:Wikifunctions:Design/3/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/4/zh|wpNewTitleMain=Translations:Wikifunctions:Design/4/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/4/zh?wpNewTitleMain=Translations:Wikifunctions:Design/4/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/5/zh|wpNewTitleMain=Translations:Wikifunctions:Design/5/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/5/zh?wpNewTitleMain=Translations:Wikifunctions:Design/5/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:Design/zh|action=delete}} Wikifunctions:Design/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:05, 22 June 2025 (UTC)
8ynvm236gmrmbtxiucsb8ypc5uwzbd5
195728
195727
2025-06-22T05:08:17Z
Winston Sung
2672
/* Move and deletion request 2025-06-22 (8) */ New topic
195728
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (4) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/1/zh|wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/1/zh?wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/2/zh|wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/2/zh?wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Userpage/text/zh|action=delete}} Template:Userpage/text/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:23, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (5) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Wikifunctions_updates/zh|action=delete}} Template:Wikifunctions_updates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Deletion request 2025-06-22 ==
Delete:
* [{{fullurl:Category:Templates/zh|action=delete}} Category:Templates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (6) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/1/zh|wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/1/zh?wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/2/zh|wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/2/zh?wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/3/zh|wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/3/zh?wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/4/zh|wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/4/zh?wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/5/zh|wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/5/zh?wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/6/zh|wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/6/zh?wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/7/zh|wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/7/zh?wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/8/zh|wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/8/zh?wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/9/zh|wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/9/zh?wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/10/zh|wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/10/zh?wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/117/zh|wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/117/zh?wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/118/zh|wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/118/zh?wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/119/zh|wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/119/zh?wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/11/zh|wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/11/zh?wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:About/zh|action=delete}} Wikifunctions:About/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:03, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (7) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:Design/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:Design/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/1/zh|wpNewTitleMain=Translations:Wikifunctions:Design/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/1/zh?wpNewTitleMain=Translations:Wikifunctions:Design/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/2/zh|wpNewTitleMain=Translations:Wikifunctions:Design/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/2/zh?wpNewTitleMain=Translations:Wikifunctions:Design/2/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/3/zh|wpNewTitleMain=Translations:Wikifunctions:Design/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/3/zh?wpNewTitleMain=Translations:Wikifunctions:Design/3/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/4/zh|wpNewTitleMain=Translations:Wikifunctions:Design/4/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/4/zh?wpNewTitleMain=Translations:Wikifunctions:Design/4/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/5/zh|wpNewTitleMain=Translations:Wikifunctions:Design/5/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/5/zh?wpNewTitleMain=Translations:Wikifunctions:Design/5/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:Design/zh|action=delete}} Wikifunctions:Design/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:05, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (8) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/117/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/117/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/117/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/117/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/118/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/118/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/118/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/118/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/119/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/119/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/119/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/119/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/120/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/120/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/120/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/120/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/121/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/121/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/121/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/121/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/122/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/122/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/122/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/122/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:Vision/zh|action=delete}} Wikifunctions:Vision/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:08, 22 June 2025 (UTC)
3fi56uum68xj2y74bugz1jsssfuur98
195729
195728
2025-06-22T05:09:38Z
Winston Sung
2672
/* Deletion request 2025-06-22 (2) */ New topic
195729
wikitext
text/x-wiki
{{shortcut|[[WF:AN]]}}
<div style="border:1px solid grey; margin:1em 5em 2em; padding:1.5em 1em;">
<!-- Don't remove this, it adds the new-thread tool to the page.-->__NEWSECTIONLINK__
[[Category:Help]]
<big>Welcome to the '''Administrators' noticeboard for Wikifunctions'''!</big>
This is a noticeboard for '''matters requiring [[Special:MyLanguage/Wikifunctions:Administrators|administrator]] attention'''.
* If you wish for something to be deleted, please use [[Wikifunctions:Requests for deletions]].
* If you want to report a bug in Wikifunctions software, please see [[Wikifunctions:Report a technical problem]].
* Matters not requiring administrator action should be raised at [[Wikifunctions:Project chat|Project chat]].
* To report [[Special:MyLanguage/Wikifunctions:Vandalism|vandalism]] on Wikifunctions: Please use [[Wikifunctions:Report vandalism]]
* Please add <code><nowiki>{{section resolved|1=~~~~}}</nowiki></code> to resolved sections.
</div>
<!-- Add new reports below this line -->
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}}}}
== Perform test error: 'Znnnnn' isn't a known Object ==
Newly run tests on {{Z|Z20181}} return this error: “Perform test error: 'Z20254' isn't a known Object”. The object is listed in the function’s test cases but no longer exists. It was deleted in November and function tests appear to have passed “6 hours ago” (as at 2025-05-30 10:00 UTC). I think the function just needs its Z8K3 editing but I doubt this is a one-off. Short of going through the deletion logs, I can’t think of a way to pick these cases up before they appear as errors. ''[https://t.me/Wikifunctions/25647 Mentioned on Telegram]'' [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:33, 30 May 2025 (UTC)
== Edit request 2025-06-18 ==
[{{fullurl:Wikifunctions:Main_Page|action=edit}} Wikifunctions:Main_Page?action=edit]
<syntaxhighlight lang="diff">
- {{#if:{{#invoke:String|match|s={{int:lang}}|pattern=zh-|plain=true|nomatch= }}<!--IF: Chinese variants
- -->|{{Main page/zh}}<!--/zh
- -->|{{Main page/{{#ifexist:Template:Main page/{{int:lang}}|{{int:lang}}|en}}}}<!--/language or /en
- -->}}{{NOEXTERNALLANGLINKS}}<!--
+ {{Main page/{{#invoke:Main_page|main|lang = {{int:lang}}}}}}<!-- /language or /en
+ -->{{NOEXTERNALLANGLINKS}}<!--
</syntaxhighlight>
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:15, 18 June 2025 (UTC)
:@[[User:Winston Sung|Winston Sung]]: [https://www.wikifunctions.org/w/index.php?title=Wikifunctions:Main_Page&diff=prev&oldid=195267 Done]. However, please in future posting requests on [[Wikifunctions talk:Main Page|the talk page]], which has interested people watching it. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 09:25, 20 June 2025 (UTC)
:{{Section resolved|1 = [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 06:38, 21 June 2025 (UTC)}}
== Move and deletion request 2025-06-21 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Shortcut_caption/1/zh|wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Shortcut_caption/1/zh?wpNewTitleMain=Translations:Template:Shortcut_caption/1/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Shortcut_caption/zh|action=delete}} Template:Shortcut_caption/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 14:27, 21 June 2025 (UTC)
== Move and deletion request 2025-06-22 ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh|wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh?wpNewTitleMain=Translations:Template:Sitenotice/Wikifunctions_is_a_new_project/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Sitenotice/Wikifunctions_is_a_new_project/zh|action=delete}} Template:Sitenotice/Wikifunctions_is_a_new_project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:13, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (2) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/51/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/51/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/52/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/52/zh-hant&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh|wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:TemplateBox/i18n/57/zh?wpNewTitleMain=Translations:Template:TemplateBox/i18n/57/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:TemplateBox/i18n/zh|action=delete}} Template:TemplateBox/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:18, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (3) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/1/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/1/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh|wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Translated_tag/i18n/2/zh?wpNewTitleMain=Translations:Template:Translated_tag/i18n/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Translated_tag/i18n/zh|action=delete}} Template:Translated_tag/i18n/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:21, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (4) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/1/zh|wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/1/zh?wpNewTitleMain=Translations:Template:Userpage/text/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Userpage/text/2/zh|wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Userpage/text/2/zh?wpNewTitleMain=Translations:Template:Userpage/text/2/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Userpage/text/zh|action=delete}} Template:Userpage/text/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:23, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (5) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/1/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/3/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/3/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh|wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Template:Wikifunctions_updates/2/zh?wpNewTitleMain=Translations:Template:Wikifunctions_updates/2/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Template:Wikifunctions_updates/zh|action=delete}} Template:Wikifunctions_updates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Deletion request 2025-06-22 ==
Delete:
* [{{fullurl:Category:Templates/zh|action=delete}} Category:Templates/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 04:41, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (6) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:About/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/1/zh|wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/1/zh?wpNewTitleMain=Translations:Wikifunctions:About/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/2/zh|wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/2/zh?wpNewTitleMain=Translations:Wikifunctions:About/2/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/3/zh|wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/3/zh?wpNewTitleMain=Translations:Wikifunctions:About/3/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/4/zh|wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/4/zh?wpNewTitleMain=Translations:Wikifunctions:About/4/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/5/zh|wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/5/zh?wpNewTitleMain=Translations:Wikifunctions:About/5/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/6/zh|wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/6/zh?wpNewTitleMain=Translations:Wikifunctions:About/6/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/7/zh|wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/7/zh?wpNewTitleMain=Translations:Wikifunctions:About/7/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/8/zh|wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/8/zh?wpNewTitleMain=Translations:Wikifunctions:About/8/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/9/zh|wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/9/zh?wpNewTitleMain=Translations:Wikifunctions:About/9/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/10/zh|wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/10/zh?wpNewTitleMain=Translations:Wikifunctions:About/10/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/117/zh|wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/117/zh?wpNewTitleMain=Translations:Wikifunctions:About/117/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/118/zh|wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/118/zh?wpNewTitleMain=Translations:Wikifunctions:About/118/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/119/zh|wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/119/zh?wpNewTitleMain=Translations:Wikifunctions:About/119/zh-hans&wpLeaveRedirect=0]
----
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hant
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:About/11/zh|wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:About/11/zh?wpNewTitleMain=Translations:Wikifunctions:About/11/zh-hant&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:About/zh|action=delete}} Wikifunctions:About/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:03, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (7) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:Design/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:Design/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/1/zh|wpNewTitleMain=Translations:Wikifunctions:Design/1/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/1/zh?wpNewTitleMain=Translations:Wikifunctions:Design/1/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/2/zh|wpNewTitleMain=Translations:Wikifunctions:Design/2/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/2/zh?wpNewTitleMain=Translations:Wikifunctions:Design/2/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/3/zh|wpNewTitleMain=Translations:Wikifunctions:Design/3/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/3/zh?wpNewTitleMain=Translations:Wikifunctions:Design/3/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/4/zh|wpNewTitleMain=Translations:Wikifunctions:Design/4/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/4/zh?wpNewTitleMain=Translations:Wikifunctions:Design/4/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Design/5/zh|wpNewTitleMain=Translations:Wikifunctions:Design/5/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Design/5/zh?wpNewTitleMain=Translations:Wikifunctions:Design/5/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:Design/zh|action=delete}} Wikifunctions:Design/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:05, 22 June 2025 (UTC)
== Move and deletion request 2025-06-22 (8) ==
Move without leaving redirects:
<syntaxhighlight lang="diff">
- /zh
+ /zh-hans
</syntaxhighlight>
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/Page_display_title/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/Page_display_title/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/Page_display_title/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/Page_display_title/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/117/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/117/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/117/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/117/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/118/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/118/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/118/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/118/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/119/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/119/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/119/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/119/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/120/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/120/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/120/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/120/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/121/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/121/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/121/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/121/zh-hans&wpLeaveRedirect=0]
* [{{fullurl:Special:MovePage/Translations:Wikifunctions:Vision/122/zh|wpNewTitleMain=Translations:Wikifunctions:Vision/122/zh-hans&wpLeaveRedirect=0}} Special:MovePage/Translations:Wikifunctions:Vision/122/zh?wpNewTitleMain=Translations:Wikifunctions:Vision/122/zh-hans&wpLeaveRedirect=0]
----
Delete:
* [{{fullurl:Wikifunctions:Vision/zh|action=delete}} Wikifunctions:Vision/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:08, 22 June 2025 (UTC)
== Deletion request 2025-06-22 (2) ==
Delete:
* [{{fullurl:Category:Project_concept/zh|action=delete}} Category:Project_concept/zh?action=delete]
* [{{fullurl:Category:Project/zh|action=delete}} Category:Project/zh?action=delete]
-- [[User:Winston Sung|Winston Sung]] ([[User talk:Winston Sung|talk]]) 05:09, 22 June 2025 (UTC)
5hy14i30juvtf5sstec32bybidmppt9
Wikifunctions:Glossary/nl
4
12685
195762
195628
2025-06-22T07:48:08Z
HanV
6833
Created page with "een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[$parser|parser]]. (voorheen "linearizer" genoemd)"
195762
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] te [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] bestaat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] aan het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; <span lang="en" dir="ltr" class="mw-content-ltr">renderer</span> {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}<span lang="en" dir="ltr" class="mw-content-ltr">This is a future feature, and the meaning of the term "renderer" in the {{Pg|:m:Abstract Wikipedia/Historic proposal|original proposal}}; this term collides with the current usage of "renderer", so it may be renamed in the future.</span>
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} <span lang="en" dir="ltr" class="mw-content-ltr">schemata</span> {{English term|schemata}}
: <span lang="en" dir="ltr" class="mw-content-ltr">See [[#function schemata|function schemata]].</span>
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
3jof8bgw2cr7r4fnvxqdbe9sd389qg8
195764
195762
2025-06-22T07:48:10Z
HanV
6833
Created page with "renderer"
195764
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] te [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] bestaat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] aan het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}<span lang="en" dir="ltr" class="mw-content-ltr">This is a future feature, and the meaning of the term "renderer" in the {{Pg|:m:Abstract Wikipedia/Historic proposal|original proposal}}; this term collides with the current usage of "renderer", so it may be renamed in the future.</span>
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} <span lang="en" dir="ltr" class="mw-content-ltr">schemata</span> {{English term|schemata}}
: <span lang="en" dir="ltr" class="mw-content-ltr">See [[#function schemata|function schemata]].</span>
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
a99l67mw0xnuc855757ovoaxcymbadk
195766
195764
2025-06-22T07:48:53Z
HanV
6833
Created page with "Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{$historic|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd."
195766
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] te [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] bestaat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] aan het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} <span lang="en" dir="ltr" class="mw-content-ltr">schemata</span> {{English term|schemata}}
: <span lang="en" dir="ltr" class="mw-content-ltr">See [[#function schemata|function schemata]].</span>
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
rqqehr5c6m5us6zvmdvutt28u9k3dte
195768
195766
2025-06-22T07:49:02Z
HanV
6833
Created page with "schema's"
195768
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] te [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] bestaat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] aan het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: <span lang="en" dir="ltr" class="mw-content-ltr">See [[#function schemata|function schemata]].</span>
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
paxe4piy1vzbgixei63n8q8kw5e9wnu
195770
195768
2025-06-22T07:49:17Z
HanV
6833
Created page with "Zie [[$function-schemata|functie schemata]]."
195770
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] te [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] bestaat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] aan het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
75pp40nxyjvz918ij3303g8kgjgv6ds
195772
195770
2025-06-22T07:50:28Z
HanV
6833
195772
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] bestaat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] aan het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
4wddmns5bx2lafupa87xzw8ebf26fvb
195774
195772
2025-06-22T07:51:09Z
HanV
6833
195774
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] aan het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
icjnok9rruyos4msbybi6wonpei0jjr
195776
195774
2025-06-22T07:51:27Z
HanV
6833
195776
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
dee85fn5pyg1okrkjygv9a8tugiqyim
195778
195776
2025-06-22T07:56:55Z
HanV
6833
195778
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door [[$evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
quhiwwpoj81zhtngb1qpiwtgsia1mt9
195780
195778
2025-06-22T07:57:17Z
HanV
6833
195780
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
akgvi77bhc5s7w38avt6tj8z8w9ge1n
195782
195780
2025-06-22T07:58:42Z
HanV
6833
195782
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[$wikiLambda-systeem|WikiLambda system account]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
abrsms56zd79kov66x1zcwdmyc1ji46
195784
195782
2025-06-22T08:02:07Z
HanV
6833
195784
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reificatie]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
ozo83r1m0ryqlwqlpjsvebfnhx2mhll
195786
195784
2025-06-22T08:06:22Z
HanV
6833
195786
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reificeren {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
ibb45q329l463pb3jzyc3u871y1n8t2
195789
195786
2025-06-22T08:09:24Z
HanV
6833
195789
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
efx8ovczqmvp8tikyb1j9n1hc3bw255
195791
195789
2025-06-22T08:09:47Z
HanV
6833
195791
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} <span lang="en" dir="ltr" class="mw-content-ltr">type converter</span> {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
bw5xj71m56v1x2ted5kt1o3izi5h8hs
195793
195791
2025-06-22T08:11:18Z
HanV
6833
Created page with "typeconverter"
195793
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} typeconverter {{English term|type converter}}
: <span lang="en" dir="ltr" class="mw-content-ltr">A script written in some programming language (such as JavaScript), taking a native object (such as BigInt), and returning a JSON object representing the corresponding ZObject; or ''vice versa''.</span>
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
m418490tsjtltvzhs7kj53cn2okhhob
195795
195793
2025-06-22T08:11:52Z
HanV
6833
Created page with "Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''."
195795
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} typeconverter {{English term|type converter}}
: Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''.
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} <span lang="en" dir="ltr" class="mw-content-ltr">validation</span> {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
nc04gp60szsndjhpqwvt57pfojvxsuf
195797
195795
2025-06-22T08:12:01Z
HanV
6833
Created page with "validatie"
195797
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} typeconverter {{English term|type converter}}
: Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''.
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} validatie {{English term|validation}}
: <span lang="en" dir="ltr" class="mw-content-ltr">The action performed by the [[#validator|validator]].</span>
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
q676sst60el27fg47uczqwfo555zjxl
195799
195797
2025-06-22T08:12:18Z
HanV
6833
Created page with "De actie die door de [[$validator|validator]] wordt uitgevoerd."
195799
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} typeconverter {{English term|type converter}}
: Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''.
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} validatie {{English term|validation}}
: De actie die door de [[#validator|validator]] wordt uitgevoerd.
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} <span lang="en" dir="ltr" class="mw-content-ltr">WikiLambda system</span> {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
sfo31yspnu1axcs2xoy87780rfq946n
195801
195799
2025-06-22T08:13:09Z
HanV
6833
Created page with "WikiLambda-systeem"
195801
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} typeconverter {{English term|type converter}}
: Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''.
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} validatie {{English term|validation}}
: De actie die door de [[#validator|validator]] wordt uitgevoerd.
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} WikiLambda-systeem {{English term|WikiLambda system}}
: <span lang="en" dir="ltr" class="mw-content-ltr">an automated system account that is a key part of the WikiLambda extension. See [[User:WikiLambda system]] for its current function.</span>
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
oxfq0nw61zhczs0vwau11mt331oiqa5
195803
195801
2025-06-22T08:13:35Z
HanV
6833
Created page with "een geautomatiseerd systeemaccount dat een belangrijk onderdeel is van de extensie WikiLambda. Zie $userpage-link voor de huidige functie."
195803
wikitext
text/x-wiki
<noinclude><languages/>
<!--<nowiki>(nowiki tags are so that the translate extension doesn't try to translate the TERM and DEFINITION in this boilerplate).
Use this boilerplate for a new term:
; {{anchor|term|Term}} <translate>term</translate> {{English term|term}}
: ''Definition verification needed''
: <translate>definition</translate>
Notes:
1. Omit the "Definition verification" if you're sure that your definition is correct.
2. You can add several values for anchor, if it has spelling or capitalization variants; see the documentation for Template:Anchor and examples in other terms.
</nowiki>--></noinclude>
Voel u vrij om naar termen te vragen op de [[Wikifunctions talk:Glossary|overlegpagina]], of om meer termen toe te voegen en de definities te verbeteren.
{|class="toccolours" style="margin:.2em auto;padding:.2em .5em;text-align:center" dir="ltr" lang="en"
|-
|style="padding:0;width:100%"|{{CompactTOC}}
|}
== A ==
; {{anchor|abstract|Abstract}} abstractie {{English term|abstract}}
: niet in een specifieke [[#natural_language|natuurlijke taal]] maar ervan abstraheren; met als doel een notatie te geven voor de betekenis achter teksten, zinnen of zinsneden in natuurlijke talen. Het tegenovergestelde van [[#concrete|concreet]].
; {{anchor|abstracttext|AbstractText}} abstracte tekst {{English term|AbstractText}}
: prototype-[https://github.com/google/abstracttext implementatie] van het [[#Wikifunctions|Wikifuncties]]-idee.
; {{anchor|abstract_content}} abstracte inhoud {{English term|abstract content}}
: zie [[#Content|inhoud]].
; {{anchor|abstract_Wikipedia|Abstract_Wikipedia}} Abstracte Wikipedia {{English term|Abstract Wikipedia}}
: voorlopige naam van alle [[#Content|inhoud]] die door [[#local_Wikipedia|lokale Wikipedia's]] kan worden gebruikt om een [[#article|artikel]] in [[#natural_language|natuurlijke taal]] [[#Renderer|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[#Item|gegevensitem]] in [[#Wikidata|Wikidata]] staat, maar dat zal voorafgaand aan [[#Part_P2|Deel P2]] in het [[#development_project|ontwikkelingsproject]] worden besproken.
; {{anchor|alias}} alias {{English term|alias}}
: een alternatief label voor een object, vooral gebruikt om het object te vinden.
; {{anchor|argument}} argument {{English term|argument}}
: invoer die aan een [[#function call|functieaanroep]] is gegeven.
; {{anchor|argument reference}} argumentreferentie {{English term|argument reference}}
: een [[#reference|referentie]] aan één van de opgegeven argumenten in een [[#composition|compositie]]
; {{anchor|array}} array {{English term|array}}
: Veel programmeertalen hebben een type "array". De tegenhangers in Wikifuncties zijn [[#list|lijst]] en [[#typed list|getypte lijst]]. Zie ook [[#Benjamin array|Benjamin-array]].
; {{anchor|article|Article}} artikel {{English term|article}}
: een pagina in de hoofdnaamruimte van [[#Wikipedia|Wikipedia]], die gewoonlijk één item in Wikipedia vertegenwoordigt.
== B ==
; {{anchor|Benjamin array}} Benjamin-array {{English term|Benjamin array}}
: een manier om [[#typed list|getypte lijst]] aan te duiden, voorgesteld door Benjamin Degenhart, waarbij een getypte lijst wordt opgeslagen als een JSON-lijst waarvan het eerste element het type aangeeft. Dit is in tegenstelling tot het eerder voorgestelde schema, dat gebruik maakt van LISP-achtige lijsten met enkelvoudig gekoppelde lijsten, waarin het type één keer in elke node moet worden opgeslagen.
; {{anchor|boolean|Boolean}} booleaans {{English term|boolean}}
: een waarde die twee toestanden kan hebben, meestal aangeduid met waar en onwaar.
; {{anchor|built-in|builtin}} ingebouwd {{English term|built-in}}
: een [[w:nl:Native|native]] implementatie van een functie die door de evaluator wordt geleverd en die niet kan worden bewerkt via de wiki-interface.
== C ==
; {{anchor|call}} aanroep {{English term|call}}
: zie [[#function call|functieaanroep]]. In het Engels kunnen ook de termen [[#invoke|invoke of invocation]] worden gebruikt.
; {{anchor|canonical|canonicalized|canonicalised}} canoniek, gecanoniseerd {{English term|canonical, canonicalized, canonicalised}}
: een specifieke, minder uitgebreide en dus beter leesbare manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; het is de gebruikelijke weergave dat ZObjecten worden opgeslagen in [[#Wikifunctions|Wikifuncties]]. Dit is in tegenstelling tot [[#normal|normaal]].
; {{anchor|character}} teken {{English term|character}}
: een teken zoals gedefinieerd door Unicode, een bestanddeel van een tekenreeks; een teken kan uit meerdere bytes (of octetten) bestaan.
; {{anchor|composition}} compositie {{English term|composition}}
: een vorm van implementatie van een functie, waarbij de implementatie wordt gegeven door de combinatie van andere functies; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|composition notation}} compositienotatie {{English term|composition notation}}
: een gemakkelijk leesbare notatie voor composities; zie [[Special:MyLanguage/Wikifunctions:Function model#Composition|functiemodel]].
; {{anchor|concrete|Concrete}} concreet {{English term|concrete}}
: in een specifieke [[#natural_language|natuurlijke taal]]. Het tegenovergestelde van [[#abstract|abstract]].
; {{anchor|cons}} cons {{English term|cons}}
: een functie om een nieuwe lijst te maken door er bovenaan een element aan toe te voegen; zie [[phab:T261474]]. Zie [[w:en:cons|cons]] in de Engelstalige Wikipedia.
; {{anchor|constructor|Constructor}} constructor {{English term|constructor}}
: een [[#abstract|abstracte]] bouwsteen van [[#Content|inhoud]]. Een constructor heeft tot doel de betekenis van een enkele zin of zinsstructuur vast te leggen. Het heeft vaak slots die andere constructors kunnen gebruiken, en kan zelf worden gebruikt als een waarde om de slots van andere constructors te vullen.
; {{anchor|Content}}<!--do not add |content to the anchor, it is used by MediaWiki--> inhoud, abstracte inhoud {{English term|content, abstract content}}
: abstracte weergave van een tekst of tekstfragment, samengesteld uit [[#Constructor|constructors]]. Technisch gezien een geïnstantieerde constructor. De constructor op het hoogste niveau wordt gebruikt om een geheel [[#article|artikel]] weer te geven en opgeslagen in [[#Abstract_Wikipedia|Abstracte Wikipedia]], maar de inhoud kan ook uit slechts een zin of zinsnede bestaan. Soms abstracte inhoud genoemd.
; {{anchor|curry}} currying, gecurrificeerd {{English term|curried, curry, currying}}
: een gecurrificeerde functie is een functie die is vertaald door het nemen van meerdere argumenten in een reeks functies, elk met een enkel argument. Deze techniek is vernoemd naar de Amerikaanse wiskundige [[w:nl:Haskell Curry|Haskell Curry]]. Zie [[:w:en:Currying|currying]] in de Engelstalige Wikipedia.
== D ==
; {{anchor|deserialization|Deserialization|deserialisation|Deserialisation}} deserialisatie {{English term|deserialization}}
: het tegenovergestelde van [[#serialization|serialisatie]].
; {{anchor|development_project|Development_project}} ontwikkelingsproject {{English term|development project}}
: een project om [[#Wikifunctions|Wikifuncties]] en [[#Abstract_Wikipedia|Abstract Wikipedia]] te ontwikkelen; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Plan|Abstract Wikipedia-plan]].
; {{anchor|display function}} weergavefunctie {{English term|display function}}
: een synoniem van [[#renderer|renderer]]. Bijvoorbeeld een functie die een [[#type|type]] converteert naar een tekenreeks die gebruikers kunnen begrijpen, zoals het converteren van een nummer 123456 naar "123,456" in (internationaal) Engels, "1,23,456" in Indiaas Engels, "123.456" in het Frans, enz., of het converteren van de datum '2024','03','12' naar '2024-03-12', enzovoort.
; {{anchor|documentation}} documentatie {{English term|documentation}}
: voor mensen leesbare tekst die een object uitlegt.
== E ==
; {{anchor|eney|eneyjj}} eneyj {{English term|eneyj}}
:# prototypemodel van [[#Wikifunctions|Wikifuncties]];
:# een JavaScript-implementatie van een [[#evaluator|evaluator]] van dat model geleverd in [[#abstracttext|abstracte tekst]].
; {{anchor|error|Error}} fout {{English term|error}}
: een type waarvan de instanties bij [[#evaluation|evaluatie]] of [[#validation|validatie]] problemen aangeven; zie [[Special:MyLanguage/Wikifunctions:Function model#Z5/Errors|functiemodel]].
; {{anchor|evaluation|Evaluation}} evaluatie {{English term|evaluation}}
: De actie die door de [[#evaluator|evaluator]] wordt uitgevoerd.
; {{anchor|evaluator|Evaluator}} evaluator {{English term|evaluator}}
: een stukje software dat een [[#ZObject|ZObject]] neemt en evalueert, dat wil zeggen een [[#Function|Functie]] uitvoert en het resultaat retourneert. Wij voorzien de ontwikkeling van verschillende evaluators. Evaluators kunnen worden geïmplementeerd en uitgevoerd in de browser, op de server van de [[#Wikimedia_Foundation|Wikimedia Foundation]], in de cloud, in een app op een mobiel apparaat of op andere plaatsen. Vergelijk met [[#executor|executor]] en [[#orchestrator|orkestrator]].
; {{anchor|execution|Execution}} Uitvoering {{English term|execution}}
: De actie die door de [[#executor|executor]] wordt uitgevoerd.
; {{anchor|executor|Executor|executors|Executors}} executor (uitvoerder) {{English term|executor}}
: een van een reeks interne diensten die niet zichtbaar zijn voor het publiek. Ze kunnen alleen worden aangeroepen door de [[#Orchestrator|orkestrator]]. Ze voeren native code uit in een specifieke programmeertaal. Er zal één executor zijn voor Lua, één voor JavaScript, één voor Python, enz. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator#executors de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#orchestrator|orkestrator]].
== F ==
; {{anchor|function|Function}} functie {{English term|function}}
: de specificatie van een berekening die enige invoer vergt en uitvoer retourneert; zie [[w:nl:Functie (informatica)|subprogramma]] in Wikipedia.
; {{anchor|function call|Function call}} functieaanroep {{English term|function call}}
: Een functieaanroep is een ZObject dat bestaat uit een functie en de vereiste argumenten voor de functie, en kan worden geëvalueerd naar een ander ZObject.
; {{anchor|function evaluator}} functie evaluator {{English term|function evaluator}}
: Zie [[#evaluator|evaluator]].
; {{anchor|function executor}} functie-uitvoerder {{English term|function executor}}
: Zie [[#executor|executor]].
; {{anchor|function model}} functiemodel {{English term|function model}}
: zie [[Special:MyLanguage/Wikifunctions:Function model|functiemodel]].
; {{anchor|function orchestrator}} function orchestrator {{English term|function orchestrator}}
: Zie [[#orchestrator|orchestrator]].
; {{anchor|function schemata}} function schemata {{English term|function schemata}}
: een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[#orchestrator|orchestrator]] en [[#evaluator|evaluator]]. Het [[#WikiLambda system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
; {{anchor|functional}} functioneel {{English term|functional}}
: afkorting van "puur functioneel", wat betekent dat de [[#evaluation|evaluatie]] van een dergelijke functie geen bijwerkingen heeft en deterministisch is, dat wil zeggen altijd hetzelfde; zie [[w:en:Purely functional programming|puur functioneel programmeren]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#non-functional|functiemodel]].
== G ==
; {{anchor|generic type}} generiek type {{English term|generic type}}
: een type dat wordt gegenereerd door [[#evaluation|evaluatie]] van een functieaanroep.
== I ==
; {{anchor|identity|Identity}} identiteit {{English term|identity}}
: De identiteit van een type is een instantie van een (specifieke) functie die evalueert naar het type. Voor een eenvoudig type is het een verwijzing naar het type zelf.
; {{anchor|implementation|Implementation}} implementatie {{English term|implementation}}
: een bepaalde manier om een [[#function|functie]] uit te voeren. Een implementatie kan een stukje code in een bepaalde programmeertaal zijn, verwijzen naar functionaliteit “ingebouwd” in de [[#evaluator|evaluator]], of oproepen naar andere functies [[#composition|samen te stellen]]. Een functie kan vele implementaties hebben, die allemaal gelijkwaardig moeten zijn. Afkorting van "[[#ZFunction|ZFunctie]]-implementatie".
; {{anchor|instance}} instantie {{English term|instance}}
: elk ZObject is een exemplaar van zijn type.
; {{anchor|invoke}} invoke {{English term|invoke}}
: synoniem in het Engels voor [[#call|aanroep]] (call). Zie [[#function call|functieaanroep]].
; {{anchor|item|Item}} item {{English term|item}}
: een vermelding in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Item|item]] in de Wikidata-woordenlijst.
== J ==
; {{anchor|JSON}} JSON {{English term|JSON}}
: een veelgebruikte formaat voor gegevensoverdracht; zie [[w:nl:JSON|JSON]].
== K ==
; {{anchor|key|Key}} sleutel {{English term|key}}
: een tekenreeks die eindigt met de letter K gevolgd door een natuurlijk getal, eventueel voorafgegaan door een [[#ZID|Z-nummer]]. Sleutels worden in [[#Wikifunctions|Wikifuncties]] meestal gedefinieerd op basis van [[#Type|types]] of [[#Function|Functies]], en worden gebruikt om [[#ZObject|ZObjecten]] te construeren.
== L ==
; {{anchor|label}} label {{English term|label}}
: hoofdnaam die wordt gegeven om een ZObject te identificeren. Mag alleen platte tekst zijn.
; {{anchor|lexeme|Lexeme}} lexeem {{English term|lexeme}}
: een vermelding in [[#Wikidata|Wikidata]] met lexicografische kennis over (grofweg) een woord; zie [[d:Wikidata:Glossary#Lexeme|lexeem]] in de Wikidata-woordenlijst.
; {{anchor|linearizer|Linearizer}} linearisator {{English term|linearizer}}
: (deze term wordt niet meer gebruikt in de huidige terminologie, maar is nog te vinden in oudere documenten) synoniem van [[#renderer|renderer]] (1).
; {{anchor|list|List}} lijst {{English term|list}}
: een gegevenstype dat een willekeurig aantal instanties in een geordende entiteit groepeert; zie [[w:nl:Lijst (informatica)|lijst (abstract gegevenstype)]] in Wikipedia.
; {{anchor|literal}} literaal {{English term|literal}}
: een waarde die geen ZObject is. Nu is de enige geaccepteerde invoer een tekenreeks.
; {{anchor|local_Wikipedia|Local_Wikipedia}} lokale Wikipedia {{English term|local Wikipedia}}
: een [[#Wikipedia|Wikipedia]] in een specifieke taal, zoals de Nederlandstalige Wikipedia, Japanstalige Wikipedia of Italiaanstalige Wikipedia.
== M ==
; {{anchor|Multlingual_Wikipedia|multilingual_Wikipedia}} meertalige Wikipedia {{English term|multilingual Wikipedia}}
: de architectuur waarmee [[#local_Wikipedia|lokale Wikipedia's]] zichzelf kunnen verrijken door [[#Content|inhoud]] van [[#Abstract_Wikipedia|Abstracte Wikipedia]] [[#Renderer|weer te geven]] (renderen) en zo een uitgebreidere, actuelere en correcte Wikipedia in hun taal te hebben; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Architecture|Abstracte Wikipedia-architectuur]].
== N ==
; {{anchor|natural_language|Natural_language}} natuurlijke taal {{English term|natural language}}
: een specifieke natuurlijke taal in bredere zin, zoals Nederlands, Engels, Tagalog of Swahili; zie [[w:nl:Natuurlijke taal|natuurlijke taal]] in Wikipedia.
; {{anchor|normal|Normal|normalized|Normalized|normalised}} normaal {{English term|normal}}
: een uitgebreide, gemakkelijk verwerkbare en zeer uniforme manier om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]. Dit is in tegenstelling tot [[#canonical|canoniek]].
; {{anchor|nothing|Nothing}} niets {{English term|nothing}}
: een gegevenstype dat geen instanties kan hebben; zie [[w:en:Bottom type|bottom type]] in de Engelstalige Wikipedia.
== O ==
; {{anchor|object|Object}} object {{English term|object}}
:# In JavaScript of JSON is een object in feite een associatieve array; zie [[w:nl:Associatieve array|associatieve array]] in Wikipedia.
:# In Wikifuncties, synoniem van [[#ZObject|ZObject]].
; {{anchor|orchestration|Orchestration}} orchestration {{English term|orchestration}}
:De actie die door de [[#orchestrator|orchestrator]] wordt uitgevoerd.
; {{anchor|orchestrator|Orchestrator}} orkestrator {{English term|orchestrator}}
: een service die een [[#ZObject|ZObject]] gebruikt en er een [[#Evaluator|geëvalueerd]] versie van retourneert. Om dit te doen, zal het de wiki aanroepen voor andere ZObjecten die het nodig heeft, de [[#Executor|uitvoerder]] aanroepen om enkele functieaanroepen te evalueren, en andere diensten aanroepen zoals [[#Wikidata|Wikidata]]. Zie [https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator#wikifunctions-function-orchestrator de servicedocumentatie]. Vergelijk met [[#evaluator|evaluator]] en [[#executor|uitvoerder]].
== P ==
; {{anchor|page|Page}} pagina {{English term|page}}
: een deel van een wiki. [[#wiki|Wiki]] bestaat uit een aantal afzonderlijke pagina's, die onafhankelijk van elkaar kunnen worden bewerkt, ze hebben o.a. onderlinge interne links.
; {{anchor|parser|Parser}} parser {{English term|parser}}
: een functie om een string naar een ZObject te converteren. Het tegenovergestelde van [[#renderer|renderer]].
; {{anchor|pair|Pair}} paar {{English term|pair}}
: een samengesteld ZObject dat twee ZObjecten van een specifiek (maar willekeurig) type bevat.
; {{anchor|part_P1|Part_P1}} Deel P1 {{English term|Part P1}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Wikifunctions|Wikifuncties]]. Het begint bij het begin van het project en duurt de hele levensduur ervan; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P1: Wikifunctions|Deel P1: Wikifuncties]].
; {{anchor|part_P2|Part_P2}} Deel P2 {{English term|Part P2}}
: het deel van het [[#development_project|ontwikkelingsproject]] dat zich bezighoudt met het creëren van [[#Abstract_Wikipedia|Abstracte Wikipedia]]. Het begint na ongeveer een jaar in het project en gaat door gedurende de tweede helft van zijn levensduur; zie [[:m:Special:MyLanguage/Abstract Wikipedia/Tasks#Part P2: Abstract Wikipedia|Deel P2: Abstracte Wikipedia]].
; {{anchor|persistent|Persistent}} persistent {{English term|persistent}}
: een [[#ZObject|ZObject]] met een [[#ZID|Z-nummer]] en met een eigen pagina in de wiki. De meeste persistente ZObjecten bevatten [[#value|waarden]] die ZObjecten zijn zonder Z-nummer, en daarom niet persistent zijn.
; {{anchor|property|Property}} eigenschap {{English term|property}}
: gebruikt om een [[#Statement|verklaring]] te maken over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Property|eigenschap]] in de Wikidata-woordenlijst.
== Q ==
; {{anchor|quote|Quote}} citaat {{English term|quote}}
: een datastructuur die niet moet worden geëvalueerd, maar woordelijk moet worden bewaard.
; {{anchor|QID}} Q-nummer {{English term|QID}}
: identificatiecode voor een item in [[#Wikidata|Wikidata]], bestaande uit de letter "Q" gevolgd door een geheel getal.
== R ==
; {{anchor|reading function}} leesfunctie {{English term|reading function}}
: een synoniem van [[#parser|parser]]. Een functie die tekstinvoer van een tekenreeks door de gebruiker omzet in een bepaald type. Bijvoorbeeld het converteren van de tekenreeks "123456" naar het nummer '123456', of de tekenreeks '2024-03-12' naar de datum '2024', '03', '12'.
; {{anchor|reference|Reference}} referentie {{English term|reference}}
: een identificatiecode die het onderliggende object aangeeft. De tekenreeks "Z11" verwijst bijvoorbeeld naar de tekst Type Z11/eentalige tekst.
: {{TakeNote}}Deze term heeft een heel andere betekenis dan op Wikidata; zie [[w:en:Reference (computer science)|referentie (informatica)]] in de Engelstalige Wikipedia.
; {{anchor|renderer|Renderer}} renderer {{English term|renderer}} (1)
: een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[#parser|parser]]. (voorheen "linearizer" genoemd)
; renderer {{English term|renderer}} (2)
: een [[#Function|functie]] die [[#Content|inhoud]] en een identificatiecode voor een [[#natural_language|natuurlijke taal]] als invoer krijgt en tekst in die natuurlijke taal als uitvoer retourneert, die de inhoud vertegenwoordigt als concrete tekst, gebruikmakend van kennis uit [[#Lexeme|lexemen]].
: {{TakeNote}}Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
; {{anchor|reify}} reïficatie {{English term|reify}}
: een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie [[phab:T261474]].
; {{anchor|REPL}} REPL {{English term|REPL}}
: een Read / Eval / Print - Loop, een opdrachtregelinterface die invoer vastlegt, deze evalueert en het resultaat weergeeft; zie [[w:en:REPL|REPL]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#REPL|functiemodel]].
== S ==
; {{anchor|schemata}} schema's {{English term|schemata}}
: Zie [[#function schemata|functie schemata]].
; {{anchor|serialization|Serialization|serialisation|Serialisation}} serialisatie {{English term|serialization}}
: manieren om [[#ZObject|ZObjecten]] weer te geven in [[#JSON|JSON]]; zie ook [[#canonical|canoniek]], [[#normal|normaal]].
; {{anchor|statement|Statement}} verklaring {{English term|statement}}
: gebruikt om kennis te verschaffen over een [[#Item|item]] in de kennisbank van [[#Wikidata|Wikidata]]; zie [[:d:Wikidata:Glossary#Statement|verklaring]] in de Wikidata-woordenlijst.
; {{anchor|string}} tekenreeks {{English term|string}}
: een reeks tekens.
; {{anchor|sum type|Sum type}} somtype {{English term|sum type}}
: een type dat exemplaren van elk van zijn samenstellende typen kan hebben; zie [[w:en:Sum type|somtype]] in de Engelstalige Wikipedia; zie [[Special:MyLanguage/Wikifunctions:Function model#Zx/Sum_types|functiemodel]].
== T ==
; {{anchor|template}} sjabloon {{English term|template}}
: een manier om een [[#renderer|renderer]] te specificeren als tekst afgewisseld met tijdelijke aanduidingen, of ''slots'', die kunnen worden gevuld met gegevens uit [[#constructor|constructors]], functieberekeningen of inhoud uit een ander sjabloon. Zie het document [[:m:Special:MyLanguage/Abstract Wikipedia/Template Language for Wikifunctions|Sjabloontaal voor Wikifuncties]] voor een gedetailleerde bespreking van de sjabloonsyntaxis.
; {{anchor|tester|Tester}} tester {{English term|tester}}
: een manier om automatisch te bepalen of een gegeven [[#ZFunction|ZFunctie]] het juiste doet. Een [[#function|functie]] heeft doorgaans meerdere testers, die elk een bepaalde invoer voor de functie specificeren en voorwaarden stellen waaraan de uitvoer voor de gegeven invoer moet voldoen. Testers voor de functie “titelhoofdletter” kunnen bijvoorbeeld het volgende bevatten: 'abc' moet 'Abc' worden; “oorlog en vrede” moeten “Oorlog en Vrede” worden; “война и мир” moet “Война и мир” worden; en “123” moet “123” blijven.
; {{anchor|transient|Transient}} vergankelijk {{English term|transient}}
: het tegenovergestelde van [[#persistent|persistent]].
; {{anchor|type|Type}} type {{English term|type}}
: Het type object vertelt ons hoe we het gegeven object moeten interpreteren en begrijpen, en wat er met het object gedaan kan worden. Als we bijvoorbeeld een object hebben met de waarde “2023”, afhankelijk van of het type een geheel getal, jaar of tekenreeks is, begrijpen we dat object anders. Elk object verwijst naar “een ding in de echte wereld”. Het gehele getal 2023 verschilt van het jaar 2023. Het type vertelt ons hoe we een bepaald object moeten interpreteren, zodat we weten naar welk ding het in de echte wereld verwijst. Technisch gezien definieert het hoe objecten van dat type zijn gestructureerd en aan welke voorwaarden ze moeten voldoen om een geldig object van dat type te zijn. een type definieert de voorwaarden voor een [[#ZObject|ZObject]] om een geldig exemplaar van dit type te zijn, door een [[#Function|functie]] aan te bieden die een ZObject valideert. Typen zijn zelf ZObjecten, zodat bijdragers van [[#Wikifunctions|Wikifuncties]] nieuwe typen kunnen maken.
; {{anchor|type converter}} typeconverter {{English term|type converter}}
: Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''.
; {{anchor|typed list|Typed List}} getypte lijst {{English term|typed list}}
: Een getypte lijst is een [[#list|lijst]] waarin alle leden van de lijst tot een specifiek, voorgedefinieerd [[#type|type]] behoren. Bijvoorbeeld, een getypte lijst van [[#string|tekenreeksen]] is een lijst waarin alle leden van de lijst tekenreeksen zijn. Een getypte lijst vergt één argument: het type waarvan alle leden van de lijst een exemplaar moeten zijn. Getypte lijsten zijn waarschijlijk het meest gebruikte [[#generic type|generieke type]].
== V ==
; {{anchor|value}} waarde {{English term|value}}
: de tekenreeks of [[#ZObject|ZObject]] geassocieerd met een [[#key|sleutel]] in een ander ZObject.
; {{anchor|validation|Validation}} validatie {{English term|validation}}
: De actie die door de [[#validator|validator]] wordt uitgevoerd.
; {{anchor|validator|Validator}} validator {{English term|validator}}
: een functie die een ZObject als argument neemt en een lijst met gevonden fouten retourneert.
== W ==
; {{anchor|wiki|Wiki}} wiki {{English term|wiki}}
: een website die het eenvoudig en gezamenlijk bewerken van de [[#page|pagina's]] mogelijk maakt.
; {{anchor|Wikidata}} Wikidata {{English term|Wikidata}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk bewerkte kennisbank; zie [[:m:Special:MyLanguage/Wikidata|Wikidata]].
; {{anchor|Wikifunctions}}{{anchor|Wikilambda}} Wikifuncties {{English term|Wikifunctions}}
: een nieuwe wiki van de [[#Wikimedia_Foundation|Wikimedia Foundation]]; een gratis, gezamenlijk ontwikkelde en onderhouden catalogus van [[#Function|functies]] Het was aanvankelijk bekend als '''WikiLambda''' in het {{Pg|:m:Abstract Wikipedia/Historic proposal|originele voorstel}} (die naam wordt nu gebruikt voor de [[#WikiLambda|WikiLambda-extensie]]).
; {{anchor|WikiLambda}} WikiLambda {{English term|WikiLambda}}
: de software waarop Wikifuncties draait, [[mw:Special:MyLanguage/Extension:WikiLambda|Extension:WikiLambda]].
; {{anchor|WikiLambda system}} WikiLambda-systeem {{English term|WikiLambda system}}
: een geautomatiseerd systeemaccount dat een belangrijk onderdeel is van de extensie WikiLambda. Zie [[User:WikiLambda system]] voor de huidige functie.
; {{anchor|WMF|Wikimedia_Foundation}} Wikimedia Foundation {{English term|Wikimedia Foundation}}
: organisatie die de Wikimedia-beweging ondersteunt; zie [[:m:Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].
; {{anchor|Wikipedia}} Wikipedia {{English term|Wikipedia}}
: een project van de [[#Wikimedia_Foundation|Wikimedia Foundation]], een gratis, gezamenlijk uitgegeven encyclopedie; zie [[:m:Special:MyLanguage/Wikipedia|Wikipedia]].
; Wikipedia, Abstracte {{English term|Wikipedia, Abstract}}
: zie [[#Abstract_Wikipedia|Abstracte Wikipedia]].
; Wikipedia, meertalige {{English term|Wikipedia, multilingual}}
: zie [[#multilingual_Wikipedia|meertalige Wikipedia]].
== Z ==
; {{anchor|ZID|ZIDs}} Z-nummer {{English term|ZID}}
: een identificatiecode beginnend met de letter Z en gevolgd door een geheel getal. Wordt gebruikt om [[#persistent|persistente]] [[#ZObject|ZObjecten]] te identificeren.
; {{anchor|zfunction|ZFunction}} ZFunctie {{English term|ZFunction}}
: een wikipagina op [[#Wikifunctions|Wikifuncties]] die een specifieke [[#function|functie]] beschrijft die kan worden gebruikt via de [[#evaluator|evaluator]]. Elke ZFunctie kan in code worden gerealiseerd door een of meer [[#implementation|implementaties]] en genoemde implementaties kunnen als correct worden geverifieerd door een of meer [[#tester|tester]]-ZFuncties.
; {{anchor|ZKey}} ZSleutel {{English term|ZKey}}
: een [[#ZObject|ZObject]] die een [[#key|sleutel]] definieert voor een bepaald [[#type|type]].
; {{anchor|ZList}} ZLijst {{English term|ZList}}
: een [[#ZObject|ZObject]] voor een geordende reeks van andere ZObjecten.
; {{anchor|ZObject}} ZObject {{English term|ZObject}}
: elk item in [[#Wikifunctions|Wikifuncties]] is een ZObject. ZObjecten opgeslagen in Wikifuncties hebben [[#ZID|Z-nummers]] en kunnen van verschillende typen zijn, zoals [[#Constructor|constructors]], [[#Function|functies]], [[#Type|types]], enz. Een ZObject bestaat uit een set van [[#Key|sleutel]]/[[#Value|waarde]]-paren, waarbij elke sleutel slechts één keer per ZObject voorkomt en de waarden ZObjecten zijn.
; {{anchor|ZUnit}} ZEenheid {{English term|ZUnit}}
: een [[#ZObject|ZObject]] dat een [[w:en:Unit type|eenheidstype]] vertegenwoordigt.
[[Category:Glossary| {{#translation:}}]]
g8c6aif8lm7veme1l11nur9aaidj2b6
Translations:Wikifunctions:Glossary/9/nl
1198
12785
195771
195586
2025-06-22T07:50:27Z
HanV
6833
195771
wikitext
text/x-wiki
voorlopige naam van alle [[$1|inhoud]] die door [[$2|lokale Wikipedia's]] kan worden gebruikt om een [[$4|artikel]] in [[$5|natuurlijke taal]] [[$3|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[$7|gegevensitem]] in [[$6|Wikidata]] bestaat, maar dat zal voorafgaand aan [[$8|Deel P2]] aan het [[$9|ontwikkelingsproject]] worden besproken.
qv4r91qnf0tv20oyrncy3crxqpk267i
195773
195771
2025-06-22T07:51:08Z
HanV
6833
195773
wikitext
text/x-wiki
voorlopige naam van alle [[$1|inhoud]] die door [[$2|lokale Wikipedia's]] kan worden gebruikt om een [[$4|artikel]] in [[$5|natuurlijke taal]] [[$3|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[$7|gegevensitem]] in [[$6|Wikidata]] staat, maar dat zal voorafgaand aan [[$8|Deel P2]] aan het [[$9|ontwikkelingsproject]] worden besproken.
q7sakmosfhqj7r72qclxup51obovuew
195775
195773
2025-06-22T07:51:26Z
HanV
6833
195775
wikitext
text/x-wiki
voorlopige naam van alle [[$1|inhoud]] die door [[$2|lokale Wikipedia's]] kan worden gebruikt om een [[$4|artikel]] in [[$5|natuurlijke taal]] [[$3|weer te geven]] (renderen); nu wordt voorgesteld dat de naam naast het overeenkomstige [[$7|gegevensitem]] in [[$6|Wikidata]] staat, maar dat zal voorafgaand aan [[$8|Deel P2]] in het [[$9|ontwikkelingsproject]] worden besproken.
mruy9easok2ocal29xf8yojf4w7auwh
Translations:Wikifunctions:Glossary/150/nl
1198
12859
195785
46882
2025-06-22T08:06:21Z
HanV
6833
195785
wikitext
text/x-wiki
een functie die een object deconstrueert in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie $phab.
acnjee3645x2au1uduwev6t6tmm8i69
195790
195785
2025-06-22T08:09:47Z
HanV
6833
195790
wikitext
text/x-wiki
een functie die een object opdeelt in zijn samenstellende delen, zodat de delen afzonderlijk toegankelijk zijn; zie [[w:en:Reification (computer science)|reification]] in de Engelstalige Wikipedia; zie $phab.
e91yf0roclbj40xr7tu8vpjodiiz5uj
Translations:Wikifunctions:Glossary/149/nl
1198
12872
195788
46911
2025-06-22T08:09:23Z
HanV
6833
195788
wikitext
text/x-wiki
reïficatie
24yr3nrwgqtvv0grxyrnr1okfh7p97y
Wikifunctions:Introduction/nl
4
19570
195746
195571
2025-06-22T07:39:12Z
HanV
6833
Created page with "Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen."
195746
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw gegevens berekeningen maken en vragen daarover beantwoorden. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# <span lang="en" dir="ltr" class="mw-content-ltr">You can now see the output of your function in the article. You can proceed to publish the changes.</span>
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# <span lang="en" dir="ltr" class="mw-content-ltr">If you want to edit the function, click on it. A tooltip will appear with the function name and description. Click on the “Edit” button.</span>
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Then you can make changes to the inputs and click on “Apply changes” when you are done editing.</span>
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Results:'''
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Was the output what you expected?</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Do you have corrections or feedback to [[Special:MyLanguage/Wikifunctions:Report a technical problem|''report'']]?</span>
[[Category:Introduction| {{#translation:}}]]
5vctgb3n3ercwvzwqk2tx0qssgkdt7b
195748
195746
2025-06-22T07:39:52Z
HanV
6833
Created page with "U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen."
195748
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw gegevens berekeningen maken en vragen daarover beantwoorden. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# <span lang="en" dir="ltr" class="mw-content-ltr">If you want to edit the function, click on it. A tooltip will appear with the function name and description. Click on the “Edit” button.</span>
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Then you can make changes to the inputs and click on “Apply changes” when you are done editing.</span>
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Results:'''
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Was the output what you expected?</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Do you have corrections or feedback to [[Special:MyLanguage/Wikifunctions:Report a technical problem|''report'']]?</span>
[[Category:Introduction| {{#translation:}}]]
20qosdnbjry31r8yu7dh8twfgdi7u67
195750
195748
2025-06-22T07:40:07Z
HanV
6833
Created page with "Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken"."
195750
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw gegevens berekeningen maken en vragen daarover beantwoorden. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken".
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Then you can make changes to the inputs and click on “Apply changes” when you are done editing.</span>
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Results:'''
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Was the output what you expected?</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Do you have corrections or feedback to [[Special:MyLanguage/Wikifunctions:Report a technical problem|''report'']]?</span>
[[Category:Introduction| {{#translation:}}]]
dj3a1qtlfrvv5dz5hgfy50k12zijtcf
195752
195750
2025-06-22T07:40:33Z
HanV
6833
Created page with "Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken."
195752
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw gegevens berekeningen maken en vragen daarover beantwoorden. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken".
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken.
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Results:'''
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Was the output what you expected?</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Do you have corrections or feedback to [[Special:MyLanguage/Wikifunctions:Report a technical problem|''report'']]?</span>
[[Category:Introduction| {{#translation:}}]]
4v2wrsyn7rzgmpnhwosj3cpawfogley
195754
195752
2025-06-22T07:40:37Z
HanV
6833
Created page with "'''Resultaten:'''"
195754
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw gegevens berekeningen maken en vragen daarover beantwoorden. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken".
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken.
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# <span lang="en" dir="ltr" class="mw-content-ltr">Was the output what you expected?</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Do you have corrections or feedback to [[Special:MyLanguage/Wikifunctions:Report a technical problem|''report'']]?</span>
[[Category:Introduction| {{#translation:}}]]
nja7xenskys5dwlei7uhxqvzg5734qp
195756
195754
2025-06-22T07:41:15Z
HanV
6833
Created page with "Was het resultaat wat u had verwacht?"
195756
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw gegevens berekeningen maken en vragen daarover beantwoorden. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken".
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken.
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# <span lang="en" dir="ltr" class="mw-content-ltr">Do you have corrections or feedback to [[Special:MyLanguage/Wikifunctions:Report a technical problem|''report'']]?</span>
[[Category:Introduction| {{#translation:}}]]
7xtsqzbe4i89swshohrm9bwyqu4bxiz
195758
195756
2025-06-22T07:42:34Z
HanV
6833
Created page with "Heeft u correcties of feedback die u wilt [[$1|''doorgeven'']]?"
195758
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw gegevens berekeningen maken en vragen daarover beantwoorden. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken".
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken.
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback die u wilt [[Special:MyLanguage/Wikifunctions:Report a technical problem|''doorgeven'']]?
[[Category:Introduction| {{#translation:}}]]
hacg4u3ou9e4g316j1nwpufbzmnetcs
195760
195758
2025-06-22T07:47:50Z
HanV
6833
195760
wikitext
text/x-wiki
<languages/>
Functies zijn computerinstructies die op basis van uw vraag en uw gegevens berekeningen maken en die resultaten tonen. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen er in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
Wikifuncties is een open source-project dat het mogelijk maakt voor iedereen om functies te creëren en met anderen te delen zodat ze die kunnen gebruiken, remixen, testen en ervan kunnen leren.
Bekijk de onderstaande doe-het-zelfgids om de basiskenmerken van Wikifuncties te zien. Wij kijken uit naar uw [[Special:MyLanguage/Wikifunctions:Report a technical problem|feedback]] en bijdragen!
<span id="Evaluate_a_Function"></span>
== Een functie evalueren ==
U kunt zelf al functies proberen die door de gemeenschap zijn gemaakt! U kan er een uit onze ''[[Wikifunctions:Main Page#Functions to try out|catalogus van functies]]'' kiezen en parameters invoeren om resultaten te krijgen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar een functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer uw invoerwaarden in.
#:[[File:Wikifunctions function page with evaluation input filled.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de functie uit.
#:[[File:Wikifunctions function page with evaluation result.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_a_Function"></span>
== Een functie creëren ==
U kunt uw eigen functies aan Wikifuncties toevoegen! Creëer een nieuwe functie zodat u deze in uw eigen implementaties met anderen kunt gebruiken. Nieuwe functies kunt u in uw voorkeurstaal schrijven.
'''Stappen:'''
# Ga naar de ''[{{MediaWiki:Createfunction-url}} pagina voor het maken van functies]''.
#:[[File:Wikifunctions create a new function page 01.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Geef de functie een naam.
#:[[File:Wikifunctions create a new function page with name filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal de parameters van de functie:
## Voeg toe/verwijder invoervelden.
## Bepaal elk parametertype.
## Geef elke parameter een naam.
#:[[File:Wikifunctions create a new function page with input type and label filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Bepaal het uitvoertype van de functie.
#:[[File:Wikifunctions create a new function page with output type filled in.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel, geeft meertalige keuzes voor deze velden:
#* Functienaam, functie-aliassen, parameterlabels.
#:[[File:Wikifunctions create a new function page with labels in another language.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de functie.
#:[[File:Wikifunctions create a new function page publish button.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Is de functie gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Edit_a_Function"></span>
== Een functie bewerken ==
U kunt aan Wikifuncties bijdragen door het bewerken van zijn catalogus van functies. Voeg meertalige informatie toe of bewerk de functies en verander hun omschrijvingen.
'''Stappen:'''
# Vind een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "Brontekst bewerken" om de bewerkingsopties voor deze functie te zien.
#:[[File:Edit function that converts a roman numeral to its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Optioneel kunt u de waarden wijzigen van:
## Functienaam,
## Functie-aliassen,
## Invoerlijst
### Invoervelden toevoegen/verwijderen
### Parametertype bewerken
### Parameterlabels bewerken
## Uitvoertype.
# Optioneel, geeft meertalige waarden voor deze velden:
## Functienaam,
## functie-aliassen,
## parameterlabels.
# Publiceer uw bewerkingen.
'''Resultaten:'''
# Zijn uw bewerkingen succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_tests"></span>
== Testen aanmaken ==
U mag testen aanmaken voor uw functie-implementaties in Wikifuncties om te verzekeren dat ze op de juiste manier werken.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]'' of de functie die u in de vorige workflow heeft aangemaakt.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de testtabel.
#:[[File:Details view of a function that turns a roman numeral into its decimal form.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Aanroep".
## In het veld onder "Functie" kunt u de naam van de functie intypen en de functie selecteren wanneer ze verschijnt.
## U kunt waarden voor de parameters in de respectieve velden toevoegen.
#:[[File:Add call to function test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op "{{int|wikilambda-zobject-to-string-select-object|{{#invoke:Wikifunctions label|getLabel|zid=Z8|lang={{CURRENTCONTENTLANGUAGE}}}}}}" onder "Resultaatvalidatie". In het veld onder "Functie" kunt u de naam van de functie die u wilt gebruiken om het resultaat te controleren invoeren.
#* Voor een functie waarvan de uitvoertype Tekenreeks is, is deze "Tekenreeksgelijkheid", voor een functie waarvan de uitvoertype Boolean is, is deze "booleaanse gelijkheid".
#* U kunt de verwachte waarde in het gegeven veld toevoegen ("Tweede tekenreeks" of "Tweede boolean").
#:[[File:Create a new test on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer de bewerkingen.
'''Resultaten:'''
# Is de test succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Create_an_implementation"></span>
== Een implementatie creëren ==
Functies zijn tot leven gebracht met implementaties om aan uw behoeften te voldoen. U kunt functies uitvoeren, remixen, en combineren via implementaties bij Wikifuncties. Zie de onderstaande sectie om te leren [[#Connect an Implementation or Test to a Function|hoe je je implementaties aan functies kunt koppelen]]. Wij adviseren [[#Create tests|om een test te creëren en te koppelen]] voordat u een implementatie aanmaakt. Een uitgebreidere gids om implementaties te creëren is op {{ll|Wikifunctions:How to create implementations}} beschikbaar.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de link "+" in de tabel met implementaties.
# U kunt een nieuwe implementatie op twee manieren aanmaken:
## '''Code'''
##* Selecteer de vereiste programmeertaal om de functiecode te schrijven.
##* Voer uw code in.
## '''Compositie''':
##* U kunt een compositie creëren met bestaande functies.
#:[[File:Create a new implementation on Wikifunctions.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Publiceer uw bewerkingen (na het uitvoeren van een test door te klikken op de ronde pijl rechts in het vak "{{int|wikilambda-function-test-cases-table-header}}").
'''Resultaten:'''
# Is de implementatie succesvol gepubliceerd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Connect_an_Implementation_or_Test_to_a_Function"></span>
== Een implementatie of test aan een functie koppelen ==
:''Let op: Deze functie is alleen voor [[Special:MyLanguage/Wikifunctions:Functioneers|Functioneers]] beschikbaar.''
Koppel testen en implementaties aan uw functie om het tot leven te laten komen.
'''Stappen:'''
# Kies een functie op de ''[[Wikifunctions:Main Page|hoofdpagina]]''.
#:[[File:Wikifunctions main page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar de functiepagina.
#:[[File:Wikifunctions function page.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Selecteer een of meer testen of een of meer implementaties.
#:[[File:A function detail page with with inactive implementations and tests selected.jpg|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op de knop “{{int|wikilambda-function-details-table-approve}}”.
'''Resultaten:'''
# Is de status {{int|wikilambda-function-tester-state-approved}}/{{int|wikilambda-function-tester-state-deactivated}} succesvol gewijzigd?
# Heeft u correcties of feedback te [[Special:MyLanguage/Wikifunctions:Report a technical problem|''melden'']]?
<span id="Insert_a_Function_in_a_Wikipedia_article"></span>
== Een functie gebruiken in een Wikipedia-artikel ==
Nu is het tijd om een functie in een Wikipedia-artikel te plaatsen en te zien hoe de magie zich ontvouwt.
'''Stappen:'''
# Open het artikel waar u een functie aan wilt toevoegen.
#:[[File:How to insert a function 01.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Ga naar het tabblad bewerken en open de VisualEditor.
#:[[File:How to insert a function 02.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Klik op het menu "Instellen" bovenaan. Scroll naar beneden en klik op "Functie". Een dialoogbox wordt geopend.
#:[[File:How to insert a function 03.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Zoek naar de functie die u wilt gebruiken en klik erop. Of probeer een van de voorgestelde functies onder de zoekbalk.
#:[[File:How to insert a function 04.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
#:[[File:How to insert a function 05.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
#:[[File:How to insert a function 06.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken".
#:[[File:How to insert a function 07.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
# Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken.
#:[[File:How to insert a function 08.png|border|{{#ifeq:{{#dir:{{PAGELANGUAGE}}}}|rtl|right|left}}|300px]]<div style="clear:both;"></div>
'''Resultaten:'''
# Was het resultaat wat u had verwacht?
# Heeft u correcties of feedback die u wilt [[Special:MyLanguage/Wikifunctions:Report a technical problem|''doorgeven'']]?
[[Category:Introduction| {{#translation:}}]]
co3an8nq1mqiyq6al521potobv8cpg3
Translations:Wikifunctions:Introduction/1/nl
1198
19571
195759
195374
2025-06-22T07:44:28Z
HanV
6833
195759
wikitext
text/x-wiki
Functies zijn computerinstructies die op basis van uw vraag en uw gegevens berekeningen maken en die resultaten tonen. Bijvoorbeeld, als u een stemassistent vraagt hoeveel mijlen er in een kilometer zitten, gebruikt de stemassistent een functie om het voor u te berekenen.
j8r30ghh5oyg8k51oi1v8argymxcvly
Translations:Wikifunctions:Function model/272/nl
1198
21995
195808
75397
2025-06-22T08:15:46Z
HanV
6833
195808
wikitext
text/x-wiki
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
5pxc1n8u4n5yqpjnot529de6bq97lhn
Wikifunctions:Function model/nl
4
21996
195805
195391
2025-06-22T08:14:38Z
HanV
6833
Created page with "== Representatie in JSON =="
195805
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, b.v. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in het '''[[Special:MyLanguage/Wikifunctions:Glossary|glossarium]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] is zeer nuttig geweest om een betere intuïtie te krijgen van wat hier aan de hand is voordat u het volgende model leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de hoofdnaamruimte van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere naamruimten kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, discussiepagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
<div lang="en" dir="ltr" class="mw-content-ltr">
A ZObject can be represented in JSON using as keys the abstract ZID keys (“Z1K1”, etc.), and the JSON representation of the value.
</div>
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
<span lang="en" dir="ltr" class="mw-content-ltr">The labelized version is often ambiguous and can not always be translated to the machine-readable representation.</span>
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
skrv4pxgwo1abq1fbvezk11abb7ofmt
195807
195805
2025-06-22T08:14:50Z
HanV
6833
Created page with "Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde."
195807
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, b.v. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in het '''[[Special:MyLanguage/Wikifunctions:Glossary|glossarium]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] is zeer nuttig geweest om een betere intuïtie te krijgen van wat hier aan de hand is voordat u het volgende model leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de hoofdnaamruimte van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere naamruimten kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, discussiepagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
<span lang="en" dir="ltr" class="mw-content-ltr">The labelized version is often ambiguous and can not always be translated to the machine-readable representation.</span>
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
bgbk2p1xo47a0yga55rc691tdjqmu6z
195809
195807
2025-06-22T08:15:46Z
HanV
6833
195809
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in het '''[[Special:MyLanguage/Wikifunctions:Glossary|glossarium]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] is zeer nuttig geweest om een betere intuïtie te krijgen van wat hier aan de hand is voordat u het volgende model leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de hoofdnaamruimte van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere naamruimten kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, discussiepagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
<span lang="en" dir="ltr" class="mw-content-ltr">The labelized version is often ambiguous and can not always be translated to the machine-readable representation.</span>
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
mdivg4nq4eaamdqnm3x578fchgei6u2
195811
195809
2025-06-22T08:16:39Z
HanV
6833
195811
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] is zeer nuttig geweest om een betere intuïtie te krijgen van wat hier aan de hand is voordat u het volgende model leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de hoofdnaamruimte van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere naamruimten kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, discussiepagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
<span lang="en" dir="ltr" class="mw-content-ltr">The labelized version is often ambiguous and can not always be translated to the machine-readable representation.</span>
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
hfwrv3kma78k4geuum0hnggywzwukb3
195813
195811
2025-06-22T08:18:32Z
HanV
6833
195813
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de hoofdnaamruimte van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere naamruimten kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, discussiepagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
<span lang="en" dir="ltr" class="mw-content-ltr">The labelized version is often ambiguous and can not always be translated to the machine-readable representation.</span>
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
ebypc0q8c2vzfxxvd0rgsttdanf70hh
195815
195813
2025-06-22T08:19:39Z
HanV
6833
195815
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de hoofdnaamruimte van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
<span lang="en" dir="ltr" class="mw-content-ltr">The labelized version is often ambiguous and can not always be translated to the machine-readable representation.</span>
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
dt5dyui2kkpdwz88qb18vl7wp90rm19
195817
195815
2025-06-22T08:20:58Z
HanV
6833
195817
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
<span lang="en" dir="ltr" class="mw-content-ltr">The labelized version is often ambiguous and can not always be translated to the machine-readable representation.</span>
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
3bhvfii1ibep3t7twa5880tu48n0inx
195819
195817
2025-06-22T08:23:06Z
HanV
6833
Created page with "De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave."
195819
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave.
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
<span lang="en" dir="ltr" class="mw-content-ltr">A Type tells us how to interpret a value.</span>
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
qmyoshfelrhosahxuze03m20euvv6o8
195821
195819
2025-06-22T08:23:13Z
HanV
6833
Created page with "Een Type vertelt ons hoe we een waarde moeten interpreteren."
195821
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave.
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
Een Type vertelt ons hoe we een waarde moeten interpreteren.
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
<div lang="en" dir="ltr" class="mw-content-ltr">
In their definition, a Key contains information of what type of object it must contain (Z3K1), the global ID that identifies that key (Z3K2), its human-readable labels (Z3K3) and whether this key is an identity field (Z3K4).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
tbhkp0tg5ekubmkta4vbyud7psye0lq
195823
195821
2025-06-22T08:24:59Z
HanV
6833
Created page with "In hun definitie bevat een Key informatie over het type object dat het moet bevatten (Z3K1), de globale ID die die sleutel identificeert (Z3 K2), zijn door de mens leesbare labels (Z3k3) en of deze sleutel een identiteitsveld is (Z3 k4)."
195823
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave.
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
Een Type vertelt ons hoe we een waarde moeten interpreteren.
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
In hun definitie bevat een Key informatie over het type object dat het moet bevatten (Z3K1), de globale ID die die sleutel identificeert (Z3 K2), zijn door de mens leesbare labels (Z3k3) en of deze sleutel een identiteitsveld is (Z3 k4).
<div lang="en" dir="ltr" class="mw-content-ltr">
An identity key allows objects to store their persisted ID. For example, Functions and Types contain an identity field. Also planned types, particularly enumerations, such as grammatical features, require identity.
</div>
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
eez7yxbvygn08e7ttj8yo2lfspsplnq
195825
195823
2025-06-22T08:26:15Z
HanV
6833
Created page with "Met een identiteitssleutel kunnen objecten hun persistente ID opslaan. Functies en typen bevatten bijvoorbeeld een veld voor identificatie. Ook geplande typen, met name opsommingen, zoals grammaticale kenmerken, vereisen identiteit."
195825
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave.
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
Een Type vertelt ons hoe we een waarde moeten interpreteren.
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
In hun definitie bevat een Key informatie over het type object dat het moet bevatten (Z3K1), de globale ID die die sleutel identificeert (Z3 K2), zijn door de mens leesbare labels (Z3k3) en of deze sleutel een identiteitsveld is (Z3 k4).
Met een identiteitssleutel kunnen objecten hun persistente ID opslaan. Functies en typen bevatten bijvoorbeeld een veld voor identificatie. Ook geplande typen, met name opsommingen, zoals grammaticale kenmerken, vereisen identiteit.
{{Anchor|Z8}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Enumerations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
9f84zaxyt5v5rb45ajjkugoh72ds0k5
195827
195825
2025-06-22T08:26:35Z
HanV
6833
Created page with "== Opsommingen =="
195827
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave.
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
Een Type vertelt ons hoe we een waarde moeten interpreteren.
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
In hun definitie bevat een Key informatie over het type object dat het moet bevatten (Z3K1), de globale ID die die sleutel identificeert (Z3 K2), zijn door de mens leesbare labels (Z3k3) en of deze sleutel een identiteitsveld is (Z3 k4).
Met een identiteitssleutel kunnen objecten hun persistente ID opslaan. Functies en typen bevatten bijvoorbeeld een veld voor identificatie. Ook geplande typen, met name opsommingen, zoals grammaticale kenmerken, vereisen identiteit.
{{Anchor|Z8}}
<span id="Enumerations"></span>
== Opsommingen ==
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
58zltbxyydzifpnauijzcrbaguv9xjz
195829
195827
2025-06-22T08:26:48Z
HanV
6833
195829
wikitext
text/x-wiki
<noinclude><languages />{{Technical documentation navbox}}
</noinclude>
[[Special:MyLanguage/Wikifunctions:About|''Wikifuncties'']] is a meertalige catalogus van '''[[Special:MyLanguage/Wikifunctions:Glossary#Function|functies]]''' waaraan iedereen kan bijdragen, waar iedereen functies kan creëren, onderhouden, aanroepen en gebruiken.
Elke functie kan meerdere implementaties hebben, bijv. in verschillende programmeertalen of met behulp van verschillende algoritmen.
Het is een "[[Special:MyLanguage/Wikifunctions:Glossary#Wikipedia|Wikipedia]] van functies" en is een zusterproject gerund door de [[Special:MyLanguage/Wikifunctions:Glossary#Wikimedia Foundation|Wikimedia Foundation]].
Dit document behandelt het datamodel en het evaluatiemodel van ''Wikifuncties''.
: In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[Special:MyLanguage/Wikifunctions:Glossary|woordenlijst]]'''.
: Het lezen van de [https://github.com/google/abstracttext/blob/master/eneyj/docs/walkthrough.md walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
{{Anchor|Z1}}
<span id="Z1/ZObjects"></span>
== Z1/ZObjecten ==
''Wikifuncties'' is een wiki. Zoals bij alle wiki's wordt de inhoud van ''Wikifuncties'' voornamelijk opgeslagen op wikipagina's.
Wikipagina's kunnen afzonderlijk worden bewerkt, maar toch moet het project als geheel een zekere consistentie behouden.
Bovendien moeten wikipagina's afzonderlijk kunnen worden bewerkt zonder dat u alle andere pagina's hoeft te begrijpen.
We introduceren ZObjecten om de inhoud van ''Wikifuncties'' weer te geven.
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
Een ZObject kan worden geserialiseerd als een JSON-object.
Een ZObject bestaat uit een lijst met sleutel/waardeparen.
* Elke waarde in een sleutel/waarde-paar is een ZObject.
* Waarden kunnen een Z6/Tekenreeks zijn, een Z9/Referentie zijn of een ander type hebben. Z6/Tekenreeks en Z9/Referentie worden eindwaarden genoemd. Ze breiden niet verder uit.
* Een Z6/Tekenreeks heeft precies twee sleutels, Z1K1/type met de waarde "Z6", en Z6K1/tekenreeks -waarde, met een willekeurige tekenreeks.
* Een Z9/Referentie heeft precies twee sleutels, Z1K1/type met de waarde "Z9" en Z9K1/referentie-ID, waarbij een tekenreeks een ZID vertegenwoordigt.
* Elke sleutel kan slechts één keer op elk ZObject voorkomen (maar kan opnieuw voorkomen op een ingebed ZObject).
ZObjecten zijn in feite abstracte syntaxisbomen.
Als er een TLDR van het project zou zijn, zou dit waarschijnlijk “zoiets als LISP in JSON” zijn.
Het doel is om een gemakkelijke UX te bieden om de creatie en manipulatie van ZObjecten via een wiki-interface mogelijk te maken en zo een codeeromgeving te creëren die een groot aantal bijdragers kan bereiken om uit te groeien tot een Wikimedia-project met een actieve gemeenschap.
Elk ZObject moet een sleutel Z1K1/type hebben met een waarde die resulteert in een Z4/Type.
We gebruiken de notatie ''ZID/label'' om op een min of meer leesbare manier naar ZID's te verwijzen, waarbij ''ZID'' een ZObject-ID of een sleutel op een dergelijk object is en ''label'' is het (Engelstalige of Nederlandstalige) label dat aan die taalneutrale ID of sleutel is bevestigd.
De representatie van een ZObject die alleen wordt weergegeven als records van sleutel/waarde-paren, en die alleen eindigt in terminale knooppunten, wordt een normaalvorm genoemd.
De normaalvorm van een ZObject is meestal degene die wordt gebruikt voor evaluatie.
<span id="Canonical_form"></span>
== Canonieke vorm ==
Om ZObjecten leesbaarder en compacter te maken, slaan we ze meestal op en verzenden we ze in de zogenaamde canonieke vorm.
Canonieke vormen gebruiken drie syntactische transformaties: voor Z9/referenties, Z6/tekenreeksen en Z881/getypte lijsten.
<span id="Canonical_References"></span>
=== Canonieke referenties ===
Een referentie verwijst naar een ZObject met zijn ZID.
Een ZID begint met de letter Z, gevolgd door een natuurlijk getal.
De normaalvorm van een referentie ziet er als volgt uit (hier en in het hele document worden ZObjecten altijd twee keer weergegeven: aan de linkerkant in de gelabelde versie, d.w.z. wanneer alle ZID's en sleutel-referenties worden vervangen door een Engels label, en aan de rechterkant met de ZID's en sleutel-referenties zonder vervanging).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z10"
}</syntaxhighlight>
|}
De canonieke vorm vervangt dat object door een enkele tekenreeks met de ZID.
De canonieke vorm van bovenstaande referentie is dus als volgt:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"natural number"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z10"
</syntaxhighlight>
|}
Merk op dat de normale en de canonieke vorm dezelfde betekenis hebben.
<span id="Canonical_Strings"></span>
=== Canonieke tekenreeksen ===
Een tekenreeks is een volgorde van Unicode-codepunten, die meestal een woord of een tekst vertegenwoordigen.
Het kan spaties en elk ander teken bevatten behalve de controletekens.
De normaalvorm van een Tekenreeks ziet er als volgt uit.
Merk op dat de waarde van de tweede sleutel inderdaad de tekenreeks is en niet de gelabelde versie van een ZID, zoals aan de rechterzijde te zien is.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Wikifunctions"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Wikifunctions"
}</syntaxhighlight>
|}
Tekenreeksen kunnen meestal worden gecanoniseerd door alleen hun tekenreeksen in plaats van het hele object.
De bovenstaande tekenreeks kan als volgt worden gecanoniseerd.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"Wikifunctions"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Wikifunctions"
</syntaxhighlight>
|}
Merk op dat tekenreeksen die beginnen met een grote Latijnse letter en worden gevolgd door een natuurlijk getal moeten worden vermeden, omdat ze anders in conflict zouden komen met de normale weergave van een Referentie.
Bijvoorbeeld, de tekenreeks <code>"Z1"</code> zou de volgende weergave hebben, zowel in de normale als de canonieke vorm.
Want anders zou het dubbelzinnig zijn als <code>"Z1"</code> naar de tekenreeks Z1 zou verwijzen of een referentie naar het object met de ZID Z1.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "string",
"string value": "Z1"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6",
"Z6K1": "Z1"
}</syntaxhighlight>
|}
<span id="Canonical_lists"></span>
=== Canonieke lijsten ===
Lijsten worden weergegeven door de zogenaamde Benjamin Arrays.
Hun beschrijving kun je hieronder vinden in de sectie [[#Z881/Typed lists|Z881/Lijsten]].
<span id="Representation_in_JSON"></span>
== Representatie in JSON ==
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
Een beter leesbare representatie kan worden gegeven door de abstracte sleutels en ZID's te vervangen door hun labels in een bepaalde taal, de "gelabelde" representatie.
De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave.
De volgende tabel geeft een voorbeeld van een ZObject dat het natuurlijke getal 2 vertegenwoordigt.
Links zien we het ZObject in het Engels, midden in het Duits en rechts het ZObject met ZID's.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
|<syntaxhighlight lang="json">{
"Typ": "natürliche Zahl",
"Dezimaldarstellung": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Zoals je kunt zien, hoeven de labels niet in het Engels te zijn, maar kunnen ze in een van de meer dan 300 talen zijn die ''Wikifuncties'' ondersteunt.
<span id="Normal_form"></span>
== Normaalvorm ==
Voor de verwerking van ZObjecten door de evaluator worden alle ZObjecten omgezet in de hierboven beschreven normaalvorm.
De normaalvorm is niet afhankelijk van enige implicietheid over het interpreteren van een tekenreeks waarde als een Z6/Tekenreeks of een Z9/Referentie, maar ze worden allemaal uitgedrukt als expliciete ZObjecten.
Dit betekent dat de normaalvorm van een ZObject een boom is waar alle bladeren ofwel van het type Z6/Tekenreeks of Z9/Referentie zijn.
Dit betekent ook dat alle lijsten worden weergegeven als ZObjecten, niet als arrays.
De volgende normaalvorm vertegenwoordigt het ZObject hierboven, dat de waarde van het natuurlijke getal 2 heeft.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "reference",
"reference id": "natural number"
},
"base 10 representation": {
"type": "string",
"string value": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10"
},
"Z10K1": {
"Z1K1": "Z6",
"Z6K1": "2"
}
}</syntaxhighlight>
|}
Normaalvormen worden gebruikt als invoer voor de evaluatie-motor. Zij zorgen ervoor dat de gegevens voor de evaluatie altijd uniform en gemakkelijk te verwerken zijn en dat er een minimaal aantal speciale situaties nodig zijn.
{{Anchor|persistent-transient}}
<span id="Persistent_and_transient"></span>
== Persistent en vergankelijk ==
Elk ZObject op het hoogste niveau dat is opgeslagen op een Wikifuncties-wikipagina is een Z2/Persistent object. ZObjecten die niet op hun eigen wikipagina zijn opgeslagen, worden vergankelijke ZObjecten genoemd.
Elk persistent ZObject moet een Z2K1/id hebben, een Z6/Tekenreeks voor de ZID, wat equivalent is aan de naam van de wikipagina waar het is opgeslagen.
Laten we aannemen dat er een ZObject is voor het natuurlijke getal 2 dat we eerder hebben gezien en dat dit is opgeslagen op de pagina Z702.
Dit is hoe het eruit zou kunnen zien (merk op dat de driecijferige ZID's die beginnen met Z7xx slechts tijdelijke aanduidingen zijn totdat we de juiste ZID's ervoor hebben in ''Wikifuncties'').
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "string",
"string value": "Z702"
},
"value": {
"type": "natural number",
"base 10 representation": "2"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "two"
},
{
"type": "monolingual text",
"language": "German",
"text": "zwei"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z702"
},
"Z2K2": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zwei"
}
]
}
}</syntaxhighlight>
|}
Alle JSON-objecten die op Wikifuncties zijn opgeslagen, worden opgeslagen in [[:mw:Unicode normalization considerations|Unicode-normalisatieformulier C]].
Alle waarden vóór evaluatie moeten ook Unicode-genormaliseerd zijn naar Unicode-normaalvorm C.
Het Z2/Persistent object is een envelop die metagegevens levert voor het ZObject dat is ingebed in de Z2K2/waarde.
Het Z2K3/label is een ZObject van het type Z12/meertalige tekst met één Z3/Key, Z12K1/teksten, die verwijst naar een lijst met Z11/eentalige tekst-ZObjecten (onthoud dat een lijst wordt weergegeven als een array in de JSON-representatie). Het label maakt de labeling mogelijk.
Er zijn nog meer Z3/Sleutels op het Z2/Persistent object die we hier weglaten. Ze zijn allemaal gedefinieerd op het Z2/Persistent object.
{{Anchor|Z9}}
<span id="Z9/References"></span>
== Z9/Referenties ==
Een Z9/Referentie is een verwijzing naar de Z2K2/waarde van het ZObject met het gegeven ID en betekent dat deze Z2K2/waarde dezelfde betekenis heeft als de referentie.
Als voorbeeld de volgende referentie:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">"two"
</syntaxhighlight>
| <syntaxhighlight lang="json">"Z702"
</syntaxhighlight>
|}
Dit is een verkorte Z9/Referentie, die er in uitgevouwen vorm als volgt uit zou zien (zoals uitgelegd in de sectie over [[#Deserialization|deserialisatie]]):
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "reference",
"reference id": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z9",
"Z9K1": "Z702"
}</syntaxhighlight>
|}
En aangezien dit een referentie is, moet deze worden vervangen door de Z2K2/waarde van het Z2/Persistente object door de ZID Z702 (zoals hierboven vermeld), d.w.z. het zou als volgt eruit zien:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "2"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "2"
}</syntaxhighlight>
|}
Alle drie JSON-representaties in deze sectie hebben dezelfde betekenis voor Wikifuncties.
Ze verwijzen allemaal naar het natuurlijke getal 2.
Merk op dat als een Z8/Functie een argumenttype heeft van Z2/Persistent object, dan in plaats van de Z2K2/waarde het Z2/Persistent object zelf wordt gesubstitueerd.
{{Anchor|Z4}}
== Z4/Types ==
Typen zijn ZObjecten van type Z4/Type. ZObjecten van een type worden instanties van dat type genoemd.
Z702/twee hierboven was een voorbeeld van het type Z10/positief geheel getal.
Een Type vertelt ons hoe we een waarde moeten interpreteren.
Een type geeft ons ook de middelen om de geldigheid van een ZObject van dat type te controleren.
Een type verklaart meestal de voor zijn instanties beschikbare sleutels en een functie die wordt gebruikt om de instanties te valideren.
Hier is het type voor natuurlijke getallen (vergemakkelijkt, omdat het de korte beschrijving, alias en alle behalve de eerste drie sleutels op Z4/Type overslaat).
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "persistent object",
"id": {
"type": "String",
"string value": "Z10"
},
"value": {
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"key id": "Z10K1",
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "base 10 representation"
},
{
"type": "monolingual text",
"language": "German",
"text": "Dezimaldarstellung"
}
]
}
}
],
"validator": "validate natural number"
},
"label": {
"type": "multilingual text",
"texts": [
"monolingual text",
{
"type": "monolingual text",
"language": "English",
"text": "natural number"
},
{
"type": "monolingual text",
"language": "German",
"text": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z10"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z10070",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "base 10 representation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "Dezimaldarstellung"
}
]
}
}
],
"Z4K3": "Z110"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1251",
"Z11K2": "positive integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1254",
"Z11K2": "natürliche Zahl"
}
]
}
}</syntaxhighlight>
|}
Laten we, om de kern van het Type gemakkelijker zichtbaar te maken, gewoon naar het Z4/Type kijken en de labels verwijderen:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": "natural number",
"keys": [
"key",
{
"type": "key",
"value type": "string",
"keyid": "Z10K1"
}
],
"validator": "validate natural number"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z10",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z10K1"
}
],
"Z4K3": "Z110"
}</syntaxhighlight>
|}
Type Z10/natuurlijk getal definieert in Z4K2/sleutels de nieuwe Z10K1/base 10-representatie van de Z3/sleutel, die we hierboven hadden gebruikt in de instantie die het nummer 2 vertegenwoordigt.
Z4K3/validator wijst op een Z8/Functie die een instantie als argument neemt en een fout of de waarde zelf retourneert, in het geval er geen fout is.
Indien er geen fouten worden geretourneerd is de instantie geslaagd voor de validatie. In het gegeven voorbeeld kan de Z8/Functie de volgende controles uitvoeren:
* Er is slechts één sleutel, de Z10K1/base 10-representatie, in de instantie, naast het Z1K1/type.
* De waarde van de base 10-representatie is van het type Z6/Tekenreeks.
* De base 10-representatie bevat alleen cijfers.
* De base 10-representatie begint niet met een 0, tenzij het alleen de 0 is.
Merk op dat alle deze controles worden uitgevoerd door Z8/Functies die door bijdragers worden aangelever en dat alle Typen door bijdragers kunnen worden gedefinieerd en gewijzigd.
Er is niets hardcoded met betrekking tot het getaltype dat we hier gebruiken.
Een instantie kan sleutels gebruiken die niet in het Type zijn gedefinieerd. Het is aan de validatorfunctie om dat toe te staan of niet.
Instanties van Z7/Functie-aanroepen gebruiken bijvoorbeeld vaak sleutels die niet zijn gedefinieerd bij Z7/Functie-aanroepen, zoals te zien is in de sectie over [[#Z7/Function calls|Z7/Functie-aanroepen]].
De meeste validatoren vereisen echter dat alle sleutels gedefinieerd zijn.
Maar een paar dingen zijn hardcoded, zoals het gedrag van Z7/functie-aabroep. Meer hierover later.
{{Anchor|Z3}}
<span id="Z3/Keys"></span>
== Z3/Sleutels ==
Alle sleutels moeten een K hebben gevolgd door een natuurlijk getal en worden meestal voorafgegaan door een ZID.
Als ze voorafgaan aan een ZID, worden ze globale sleutels genoemd, indien niet, worden ze lokale sleutels genoemd. De volgende twee weergaven zijn bijvoorbeeld gelijkwaardig.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"K1": "Z702",
"K2": "Z702"
}</syntaxhighlight>
|}
Globale sleutels worden argumenten genoemd terwijl lokale sleutels positionele argumenten zijn.
* De algemene regel is om globale sleutels te gebruiken wanneer het mogelijk is.
* De belangrijkste gebruikssituatie voor lokale sleutels is wanneer een Z8/Functie of Z4/Type ter plekke wordt gemaakt en dus geen globale sleutel kan hebben omdat de aangemaakte Z8/Functie of Z4/Type zelf niet persistent is.
Een globale sleutel wordt altijd gedefinieerd op het ZObject waar het ZID-deel van de ID naar verwijst.
In hun definitie bevat een Key informatie over het type object dat het moet bevatten (Z3K1), de globale ID die die sleutel identificeert (Z3 K2), zijn door de mens leesbare labels (Z3k3) en of deze sleutel een identiteitsveld is (Z3 k4).
Met een identiteitssleutel kunnen objecten hun persistente ID opslaan. Functies en typen bevatten bijvoorbeeld een veld voor identificatie. Ook geplande typen, met name opsommingen, zoals grammaticale kenmerken, vereisen identiteit.
{{Anchor|Z8}}
<span id="Enumerations"></span>
== Opsommingen (Enumerations) ==
<div lang="en" dir="ltr" class="mw-content-ltr">
An enumeration is a type that has a limited number of values. Examples of enumerations are the type Boolean (with the values "false" and "true"), or Integer sign (with the values "positive", "neutral" or "negative"). Enumerations are also an important tool to support linguistic functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Every enumeration type has one key that is marked as an identity field. For example, let's look at the Type definition for Boolean (removing key labels for simplicity):
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Type",
"identity": "Boolean",
"keys": [
"Key",
{
"type": "Key",
"value type": "Boolean",
"key id": "Z40K1",
"label": { /* "identity" */ },
"is identity": "True"
}
],
...
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": { /* "identity" */ },
"Z3K4": "Z41"
}
],
...
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
All limited values for Boolean will assign their ZID as the value for their identity/Z40K1 key. See, for example, True, which contains its identity and additionally the multilingual data (name, description, aliases) as part of the Persistent Object keys.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="9">{
"type": "Persistent object",
"identity": {
"type": "String",
"value": "Z41"
},
"value": {
"type": "Boolean",
"identity": "True"
},
"labels": {
"type": "Multilingual text",
"texts": [
"Monolingual text",
{
"type": "Monolingual text",
"language": "English",
"text": "true"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="9">{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z41"
},
"Z2K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "true"
}
]
}
}</syntaxhighlight>
|}
<span id="Z8/Functions"></span>
== Z8/Functies ==
In de definitie van Z10/natuurlijk getal hebben we een eerste verwijzing naar een Z8/Functie gezien, Z110/validatie van een natuurlijk getal.
Hier gebruiken we een veel eenvoudiger functie, Z781/optellen. Z781/optellen is een Z8/Functie die twee Z10/natuurlijke getallen neemt en een Z10/naturlijk getal teruggeeft.
We laten alleen de waarde zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function",
"arguments": [
"argument declaration",
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K1",
"label": { ... }
},
{
"type": "argument declaration",
"argument type": "natural number",
"key id": "Z781K2",
"label": { ... }
}
],
"return type": "natural number",
"tests": [
"testers",
"add one and zero",
"add two and two"
],
"implementations": [
"implementation",
"+ in Python",
"recursive addition",
"+ in JavaScript"
],
"identity": "add"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K1",
"Z17K3": { ... }
},
{
"Z1K1": "Z17",
"Z17K1": "Z10",
"Z17K2": "Z781K2",
"Z17K3": { ... }
}
],
"Z8K2": "Z10",
"Z8K3": [
"Z20",
"Z711",
"Z712"
],
"Z8K4": [
"Z14",
"Z721",
"Z722",
"Z723"
],
"Z8K5": "Z144"
}</syntaxhighlight>
|}
Om beknopt te zijn, hebben we de Z17K3/labels verwijderd van de Z17/Argument-verklaringen, die worden geïdentificeerd met behulp van Z17K2/sleutel-ID's.
Maar net als de Z3/Sleutels op Z4/Types, hebben ze labels in alle ondersteunde talen.
De sleutels zijn globaal wanneer de Z8/Functie persistent is, en lokaal wanneer ze vergankelijk is.
De functie wordt gespecificeerd in de (overgeslagen) documentatie, maar ook in de Z8K3/tests en de Z8K1/type-verklaringen over de argumenten en het Z8K2/retourneer-type.
Bovendien kunnen de implementaties elkaar bevestigen, omdat een functie meerdere Z8K4/Implementaties kan hebben.
Z8/Functies mogen geen bijwerkingen hebben die de status veranderen.
{{Anchor|Z7}}
<span id="Z7/Function_calls"></span>
== Z7/Functie-aanroepen ==
Het volgende ZObject is een functie-aanroep.
In de tweede rij zien we een compacte weergave van de functie-aanroep, die een syntax gebruikt die bekend is voor functie-aanroepen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
}</syntaxhighlight>
|-
| <code>'''add'''('''two''', '''two''')</code>
| <code>'''Z781'''('''Z702''', '''Z702''')</code>
|}
Met behulp van literalen in plaats van persistente ZObjecten voor de argumenten, zou dit er als volgt uitzien.
* Merk op dat we de literalen maken gebruik makend van het Z10/positief geheel getal als constructeur.
* Alle Z4/Types kunnen zo worden genoemd, waardoor elk van hun sleutels een waarde krijgt.
* Dit is geen Z7/Functie-aanroep, maar een notatie voor het object van het gegeven Z4/Type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "function call",
"function": "add",
"left": {
"type": "natural number",
"base 10 representation": "2"
},
"right": {
"type": "natural number",
"base 10 representation": "2"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z10",
"Z10K1": "2"
},
"Z781K2": {
"Z1K1": "Z10",
"Z10K1": "2"
}
}</syntaxhighlight>
|-
| <code>'''add'''('''natural number'''<"2">, '''natural number'''<"2">)</code>
| <code>'''Z781'''('''Z10'''<"2">, '''Z10'''<"2">)</code>
|}
Wanneer deze Z7/Functie-aanroep wordt geëvalueerd, resulteert het zoals verwacht in het getal vier.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "natural number",
"base 10 representation": "4"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z10",
"Z10K1": "4"
}</syntaxhighlight>
|-
| <code>'''natural number'''<"4"></code>
| <code>'''Z10'''<"4"></code>
|}
De evaluatie wordt herhaaldelijk uitgevoerd op het evaluatieresultaat totdat een vastgesteld punt is bereikt.
{{Anchor|Z14}}
<span id="Z14/Implementations"></span>
== Z14/Implementaties ==
Elke Z8/Functie kan verschillende Z14/Implementaties hebben.
Er zijn drie hoofdsoorten van Z14/Implementaties: ingebouwde, Z16/code of door samenstelling van andere Z8/Functies.
Laten we eens kijken naar de functie Z781/optellen en vier verschillende Z14/implementaties voor deze functie.
{{Anchor|builtins}}
<span id="Builtin_implementations"></span>
=== Ingebouwde implementaties ===
Een ingebouwde implementatie vraagt de evaluator een passend evaluatieresultaat terug te geven.
Built-ins zijn ingecodeerd in de evaluator. Z14K4/built-in verwijst naar de hardcoded built-in-ID (die de ZID van het Z2/Persistent object moet zijn).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"builtin": "Z791"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K4": "Z791"
}</syntaxhighlight>
|}
Een evaluator is zich bewust van al zijn eigen built-ins en kan ze gebruiken wanneer hij wil.
Merk op dat toevoeging geen functie zou zijn die een built-in zou krijgen. Dit is hier slechts voor illustratieve doeleinden vermeld.
{{Anchor|Z16}}
=== Z16/Code ===
Een implementatie in Z16/Code vertegenwoordigt een codefragment in een bepaalde programmeertaal.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "javascript",
"source": "function add(left, right) {
return left + right;
}"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z781(Z781K1, Z781K2) {
return Z781K1 + Z781K2;
}"
}
}</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"code": {
"type": "code",
"language": "python",
"source": "def add(left, right):
return left + right"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z781(Z781K1, Z781K2):
return Z781K1 + Z781K2"
}
}</syntaxhighlight>
|}
De evaluator zou weten hoe de gegeven ZObjecten, die de argumenten vertegenwoordigen, in de ondersteunde programmeertaal te transformeren, hoe het verstrekte codefragment uit te voeren en vervolgens het resultaat terug te transformeren in een ZObject die het resultaat vertegenwoordigt.
Uiteindelijk zou de vertaling van ZObjecten naar de oorspronkelijke waarden van de ondersteunde programmeertalen binnen ''Wikifuncties'' zelf worden afgehandeld (waarvoor een nieuw ontwerpdocument nodig is).
Tot dan ondersteunen we alleen Z16/Code voor argumenten en retourtypen die hardgecodeerde ondersteuning door de evaluator hebben.
<span id="Z46/Deserializer"></span>
==== Z46/Deserialisator ====
Een Z46/Deserialisator neemt een ZObject van een specifiek type en verandert het in een waarde voor een bepaalde programmeertaal.
Bijvoorbeeld, de volgende Z46/Deserialisatoren neemt een ZObject van type Z10/Natuurlijk getal en verandert het in een JavaScript BigInt-waarde.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "deserializer",
"identity": "to BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function deserialize( value ) {
return BigInt( value.decimal_representation.string_value );
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z46",
"Z46K1": "Z787",
"Z46K2": "Z10",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z787(Z787K1) {
return BigInt( Z787K1.Z10K1.Z6K1 );
}"
},
"Z46K4": "BigInt"
}</syntaxhighlight>
|}
Het Z46K4/native type zegt in welk type de deserialisator zal resulteren.
Hierdoor kunnen we natuurlijke implementaties zoals hierboven gebruiken in een optelling.
<span id="Z64/Serializer"></span>
==== Z64/Serialisator ====
De omgekeerde werking van een Z46/Deserialisator is de Z64/Serialisator.
Z64/Serialisator neemt een waarde in de gegeven programmeertaal en maakt van deze een ZObject van het gevraagde type.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "serializer",
"identity": "from BigInt",
"type": "Natural number"
"converter": {
"type": "code",
"language": "javascript",
"source": "function serialize( value ) {
return {
'type': {
'type': 'reference',
'reference id': 'natural number'
},
'base 10 representation': {
'type': 'string',
'string value': value.toString()
}
}
}"
},
"native type": "BigInt"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z64",
"Z64K1": "Z789",
"Z64K2": "Z10",
"Z64K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z789(Z789K1) {
return {
'Z1K1': {
'Z1K1': 'Z9',
'Z9K1': 'Z10'
},
'Z10K1': {
'Z1K1': 'Z6',
'Z6K1': Z789K1.toString()
}
}
}"
},
"Z64K4": "BigInt"
}</syntaxhighlight>
|}
<span id="Composition"></span>
=== Compositie ===
De meest draagbare (maar vaak ook de langzaamste) Z14/Implementatie wordt bereikt door de samenstelling van andere Z8/Functies.
We tonen zowel het ZObject van de implementatie, als een gemakkelijker te lezen notatie op basis van de syntax van de functie-aanroep.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "implementation",
"implements": "add",
"composition": {
"type": "function call",
"function": "if",
"condition": {
"type": "function call",
"function": "is zero",
"arg": {
"type": "argument reference",
"reference": "right"
}
},
"consequent": {
"type": "argument reference",
"reference": "left"
},
"alternative": {
"type": "function call",
"function": "add",
"left": {
"type": "function call",
"function": "successor",
"arg": {
"type": "argument reference",
"reference": "left"
}
},
"right": {
"type": "function call",
"function": "predecessor",
"arg": {
"type": "argument reference",
"reference": "right"
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z14",
"Z14K1": "Z781",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z782",
"Z782K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": {
"Z1K1": "Z7",
"Z7K1": "Z783",
"Z783K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K1"
}
},
"Z781K2": {
"Z1K1": "Z7",
"Z7K1": "Z784",
"Z784K1": {
"Z1K1": "Z18",
"Z18K1": "Z781K2"
}
}
}
}
}</syntaxhighlight>
|-
| <code><!--
-->'''if'''(<br><!--
--> '''is zero'''(''right''),<br><!--
--> ''left'',<br><!--
--> '''add'''(<br><!--
--> '''successor'''(''left''), <br><!--
--> '''predecessor'''(''right'')<br><!--
--> )<br><!--
-->)</code>
| <code><!--
-->'''Z802'''(<br><!--
--> '''Z782'''(''Z781K2''),<br><!--
--> '''Z781K1''',<br><!--
--> '''Z781'''(<br><!--
--> '''Z783'''(''Z781K1''), <br><!--
--> '''Z784'''(''Z781K2'')<br><!--
--> )<br><!--
-->)</code>
|}
Deze samenstelling is gebaseerd op een aantal andere Z8/Functies:
Z782/is nul, Z783/opvolger, Z784/voorganger, Z801/if, en het meest interessante - zichzelf.
Het is volkomen oké voor een Z14//Implementatie om haar eigen Z8/Functie recursief te noemen.
Merk echter op dat de evaluator de Z14/Implementatie niet recursief hoeft te noemen - een evaluator is vrij om elke implementatie bij elke terugkerende stap te kiezen.
Dit is allesbehalve snel – maar het stelt ons in staat een goed begrepen formalisatie en een zeer eenvoudige implementatie ervan te gebruiken om ervoor te zorgen dat de andere implementaties van Z781/optellen correct zijn – weliswaar waarschijnlijk van minder belang voor optelling, maar we ons voorstellen dat er Z8/Functies zijn die duidelijk meer correctere implementaties hebben en veel slimmere snellere implementaties.
''Wikifuncties'' kunnen deze implementaties met elkaar vergelijken en ons zo een gevoel van zekerheid geven over hun juistheid.
<span id="Example_evaluation"></span>
==== Evaluatievoorbeeld ====
In het volgende evalueren we de bovenstaande samenstelling.
We beginnen met de volgende Z7/functie-aanroep (we houden ons alleen aan de functionele syntax vanwege de korte tijd).
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(Natural number<"2">, Natural number<"2">)
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(Z10<"2">, Z10<"2">)
</syntaxhighlight>
|}
We vervangen de functie-aanroep met de bovenstaande samenstelling en vervangen de argumenten met de gegeven waarden. Dat resulteert in de volgende code.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"2">),
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"2">),
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
We evalueren de <code>Z782/is zero(Z10/Natural number<"2">)</code> naar de Z40/Booleaanse waarde van Z42/onwaar (aangezien 2 niet nul is).
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"2">,
add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"2">,
Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)
)</syntaxhighlight>
|}
Dit stelt ons in staat om de aanroep naar Z802/if te vervangen door het Z802K3/alternatief, aangezien de Z803K1/conditie onwaar is.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"2">),
predecessor(Natural number<"2">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"2">),
Z784(Z10<"2">)
)</syntaxhighlight>
|}
De Z783/opvolger-functie voegt slechts één toe aan een getal en de Z784/voorganger-functie verwijdert één.
Deze functies kunnen wel/niet in code of op een andere manier worden uitgevoerd, dit maakt niet echt uit.
Als we beide functie-aanroepen vervangen, komen we tot de volgende aanroep:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"3">,
Natural number<"1">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"3">,
Z10<"1">
)</syntaxhighlight>
|}
We vervangen de aanroep Z781/optellen opnieuw met de samenstelling ervan en vervangen de argumenten met de nieuwe waarden.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"1">),
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"1">),
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
We controleren opnieuw of de waarde gegeven aan Z782/nul is (dat het is niet, het is één).
We vervangen de aanroep naar Z782/is nul weer met Z42/onwaar.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
false,
Natural number<"3">,
add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z42,
Z10<"3">,
Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)
)</syntaxhighlight>
|}
Aangezien de Z802K1/conditie opnieuw onwaar is, vervangen we de aanroep door Z802/if met het Z803K3/alternatief.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
successor(Natural number<"3">),
predecessor(Natural number<"1">)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z783(Z10<"3">),
Z784(Z10<"1">)
)</syntaxhighlight>
|}
We vervangen de functie-aanroepen naar Z783/opvolger en Z784/voorganger met de respectieve resultaten, een nummer meer, een nummer minder.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">add(
Natural number<"4">,
Natural number<"0">
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z781(
Z10<"4">,
Z10<"0">
)</syntaxhighlight>
|}
Wij zijn nu weer op het punt om de aanroep tot Z781/optellen te vervangen door de samenstelling ervan.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
is zero(Natural number<"0">),
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z782(Z10<"0">),
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
Het aanroepen naar Z782/is nul heeft nu het argument Z10/natuurlijk getal<"0"> dat inderdaad nul is.
Dus de aanroep naar Z782 is nul resulteert in een Z41/waar.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">if(
true,
Natural number<"4">,
add(
successor(Natural number<"4">),
predecessor(Natural number<"0">)
)
)</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z802(
Z41,
Z10<"4">,
Z781(
Z783(Z10<"4">),
Z784(Z10<"0">)
)
)</syntaxhighlight>
|}
De Z802/if-functie-aanroep heeft nu een Z41/waar Z802K1/conditie, wat betekent dat we de hele aanroep vervangen door de Z802 K2/consequentie, niet het Z803K3/alternatief.
Dat resulteert in:
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="javascript" line="line">Natural number<"4">
</syntaxhighlight>
| <syntaxhighlight lang="javascript" line="line">Z10<"4">
</syntaxhighlight>
|}
Dit is een vast punt, d.w.z. het verandert niet bij evaluatie en is dus het resultaat van onze functie-aanroep.
2 en 2 is 4.
{{Anchor|evaluation-order}}
<span id="Evaluation_order"></span>
==== Evaluatievolgorde ====
De evaluatievolgorde is aan de evaluator.
Aangezien alle Z8/Functies geen bijwerkingen mogen hebben, zal dit altijd tot hetzelfde resultaat leiden.
Maar een onwijze evaluatiestrategie kan leiden tot veel meer rekeningen dan nodig of zelfs tot de situatie dat de evaluator niet kan te afronden.
Z722/recursieve optelling geeft ons een voorbeeld dat in een eindeloze lus kan eindigen als we een volledige evaluatievolgorde proberen:
Voor de aanroep naar Z802/if in Z722/recursieve optelling zou het onwijs zijn om eerst alle drie de argumenten te evalueren en vervolgens het tweede of het derde argument terug te geven.
Afhankelijk van de eerste Z802K1/voorwaarde van het argument zullen we alleen Z802K2/consequent of Z802K3/alternatief moeten retourneren.
Het is nooit zo dat we zowel het tweede als het derde argument moeten evalueren.
In feite kunnen we zelfs het tweede of derde argument niet ongeëvalueerd retourneren.
Onthoud dat de evaluator elk resultaat toch opnieuw zal evalueren totdat een vast punt is bereikt.
Dus Z802/if kan eenvoudig worden geïmplementeerd, laat de irrelevante tak liggen en retourneert de relevante tak als een ongeëvalueerd ZObject.
Een luie evaluatiestrategie wordt over het algemeen aanbevolen, maar bijvoorbeeld wanneer de evaluator een Z16/Code-gebaseerde implementatie wil gebruiken, is dit mogelijk niet haalbaar.
En dan kan de evaluator beslissen om eerst de argumenten te evalueren en dan de externe aanroep.
Uiteindelijk zijn er mogelijkheden om te experimenteren met verschillende evaluatiestrategieën.
{{Anchor|Z20}}
<span id="Z20/Testers"></span>
== Z20/Tests ==
Z20/Tests zijn ZObjecten die een Z20K2/aanroep doen en vervolgens een Z20K3/validator gebruiken op het resultaat. Z20K3/Validator is een onvolledige Z7/functie-aanroep die het resultaat van de Z20K2/aanroep als eerste argument krijgt geïnjecteerd.
Als de Z20K3/validator een Z41/waar geeft, slaagt de Z20/Tester, anders mislukt deze.
Tests worden gebruikt om ervoor te zorgen dat alle Z14/implementaties zich op hun juiste manier gedragen en moeten worden beschouwd als vergelijkbaar met eenheidstesten.
Een Z8/Functie moet alle Z20/Tests vermelden die moeten worden goedgekeurd voor een Z14/Implementatie om meewerkend te zijn.
Bovendien kunnen de verschillende Z14/Implementaties op elkaar worden getest om consistentie te waarborgen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line='line'>{
"type": "tester",
"function": "add",
"call": {
"type": "function call",
"function": "add",
"left": "two",
"right": "two"
},
"result validator": {
"type": "function call",
"function": "equivalent natural number",
"right": "four"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z20",
"Z20K1": "Z781",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z781",
"Z781K1": "Z702",
"Z781K2": "Z702"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z788",
"Z788K2": "Z704"
}
}</syntaxhighlight>
|}
In dit geval evalueren we eerst de Z20K2/aanroep, die <code>Z781/optellen(Z702/twee, Z702/twee)</code> is, resulterend in <code>Z10/Natuurlijk getal<"4"></code>.
Dat wordt vervolgens gebruikt in de Z20K3/resultatenvalidator, waar het als eerste argument wordt geïnjecteerd, wat resulteert in <code>Z788/natural number equality(Z10/Natural number<"4">, Z704/four)</code>.
Deze aanroep moet resulteren in Z41/waar en dus zou de Z20/Tester moeten slagen.
{{Anchor|generic-types}}
<span id="Generic_types"></span>
== Generieke types ==
Een generiek type wordt gerealiseerd door een Z7/Functie-aanroep naar een Z8/Functie die enkele argumenten neemt en een Z4/Type teruggeeft.
Het Z882/getypt paar is bijvoorbeeld een functie die twee Z4/Types als argumenten gebruikt, één voor het eerste en één voor het tweede element, en retourneert een inline Z4/Type.
Dus om een paar Z10/Natuurlijke getallen te maken, noemen we <code>Z882/Getypt paar(Z10/Natuurlijk getal, Z10/Natuurlijk getal)</code> en het resultaat is een Z4/Type dat we kunnen gebruiken voor de Z1K1-veld van een ZObject.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"first": "one",
"second": "two"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"K1": "Z701",
"K2": "Z702"
}</syntaxhighlight>
|}
Het resultaat van de Z7/Functie-aanroep is een dynamisch gecreëerd Z4/Type dat ervoor zorgt dat de twee elementen van het paar de juiste Z4/Typen hebben.
Het resultaat van die Z7/Functie-aanroep ziet er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "type",
"identity": {
"type": "function call",
"function": "typed pair",
"first": "natural number",
"second": "natural number"
},
"keys": [
"key",
{
"type": "key",
"id": "K1",
"value type": "natural number"
},
{
"type": "key",
"id": "K2",
"value type": "natural number"
}
],
"validator": "validate typed pair"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z10",
"Z882K2": "Z10"
},
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z1K2": "K1",
"Z3K1": "Z10"
},
{
"Z1K1": "Z3",
"Z1K2": "K2",
"Z3K1": "Z10"
}
],
"Z4K3": "Z892"
}</syntaxhighlight>
|}
Dit is ook een voorbeeld van het gebruik van het Z4K1/identiteitsveld op Z4/Type: het beschrijft hoe het Z4/Type is gemaakt en stelt ons in staat toegang te krijgen tot de argumenten die worden gebruikt voor het maken van een Type.
Het bewaren van deze informatie in een verklaring is zeer nuttig voor de statische validatie van een functie-aanroep en voor het vergelijken van typen.
Als we een Z882/Getypt paar willen dat het Z4/Type van een of beide elementen niet beperkt, zou men de Z882/Getypt paarfunctie kunnen aanroepen met Z1/ZObject als een of beide argumenten.
{{Anchor|Z10}}
<span id="Z881/Typed_lists"></span>
== Z881/Getypte lijsten ==
Hier is een lijst met twee tekenreeksen.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"string",
"a",
"b"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z6",
"a",
"b"
]</syntaxhighlight>
|}
Als we dit omzetten in ZObjecten, ziet het er als volgt uit.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "a",
"tail": {
"type": {
"type": "function call",
"function": "typed list",
"elementtype": "string"
},
"head": "b"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"K1": "a",
"K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z10K1": "Z6"
},
"K1": "b"
}
}</syntaxhighlight>
|}
Een JSON-array begint altijd met het type dat wordt gebruikt voor de Z881/Getypte lijst. Dit is niet het eerste element van de lijst, maar alleen het type voor de getypte lijst. Deze arrays worden Benjamin-arrays genoemd.
Als we een ongetypeerde lijst willen, gebruiken we Z1/Object als argument. Een ongetypeerde lege lijst zou als eruit zien.
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">[
"object"
]</syntaxhighlight>
| <syntaxhighlight lang="json">[
"Z1"
]</syntaxhighlight>
|}
{{Anchor|Z22}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z22/Evaluation result ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Z7/Function call executed in Wikifunctions always returns an object of type Z22/Evaluation result.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An Evaluation result object always contains the value returned from the execution of a Function Call and a collection of metadata gathered during the evaluation. Here's an example of a successful response:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "Hello, World!",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "orchestrationDuration",
"value": "139 ms"
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Hello, World!",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "orchestrationDuration",
"K2": "139 ms"
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
If the evaluation is unsuccessful, the response field will contain Z24/Void, while the metadata field will contain an "error" key with the details of the failure. This is an example of a failed Evaluation result object:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
| <syntaxhighlight lang="json" line="line">{
"type": "evaluation result",
"result": "void",
"metadata": {
"type": {
"type": "function call",
"function": "typed map",
"key type": "string",
"value type": "object"
},
"map": [
{
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
{
"type": {
"type": "function call",
"function": "typed pair",
"first type": "string",
"second type": "object"
},
"key": "errors",
"value": {
"type": "error",
"error type": "unspecified error",
"error value": {
"type": {
"type": "function call",
"function": "errortype to type",
"errortype": "unspecified error"
},
"error information": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z22",
"Z22K1": "Z24",
"Z22K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "errors",
"K2": {
"Z1K1": "Z5",
"Z5K1": "Z500",
"Z5K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z885",
"Z885K1": "Z500"
},
"Z500K1": "Some error happened"
}
}
}
]
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
These examples are just condensed versions of the real Evaluation result objects and only contain one example key in the Metadata field. In real examples, the metadata collection will return all the metrics gathered by the backend services, including the run's duration, CPU usage, and memory usage.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a more detailed description of all the possible metadata returned in the Evaluation result object, see [[mw:Special:MyLanguage/Help:Wikifunctions/Function call metadata|the Function call metadata guide in Mediawiki]].
</div>
{{Anchor|Z5}}
<span id="Z5/Errors"></span>
== Z5/Fouten ==
Een Z7/Functie-aanroep kan leiden tot een Z5/Fout.
Dit gebeurt wanneer de functieaanroep niet goed kan worden uitgevoerd en niet kan worden hersteld (bijv. delen door nul of een storing als gevolg van onvoldoende geheugen).
<span lang="en" dir="ltr" class="mw-content-ltr">Z5 is a generic type.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each instance of Z5 references the ZID of an error type (in Z5K1/error type), and that error type determines the type of Z5K2/error value, and the keys that will be present therein.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Each error type is an instance of Z50/error type, and ZIDs Z500–Z599 are reserved for error types.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Additional information is available at [[:m:Special:MyLanguage/Abstract Wikipedia/Representation of errors|Abstract Wikipedia/Representation of errors]].</span>
{{Anchor|Z99}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Z99/Quote ==
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote is used as a wrapper around another ZObject, to indicate that it should not be evaluated ("resolved").</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(This is similar to quoting in Lisp.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Z99/Quote has a single key, Z99K1/quotation, of type Z1/Object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">To illustrate, some parts of error objects (instances of Z5/Error) are quoted when they get created during the execution of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, an error of type Z507/Error in evaluation includes a copy of the entire function call whose execution caused the error (as the value of Z507K1/function call).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Because this function call is very likely to be malformed in some way, we ensure that no further attempt is made to evaluate it, by quoting it inside the error object.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">(Thus, the type of Z507K1 is declared as Z99, and its value is always quoted.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We use the following guidelines for when to use Z99/Quote:</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote a ZObject when we believe it may be invalid in some way.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">But do not quote Z1K1 by itself. If its value is in doubt, quote the entire object that contains it.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote resolvable keys (keys whose values contain instances of Z7, Z9, or Z18) that might inappropriately be ingested as the input to a function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Quote when resolving a value might cause a catastrophe (e.g. infinite recursion).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Note: as our resolution strategy evolves, it's possible that (3) and (4) could become unnecessary.</span>
{{Anchor|non-functional}}
<span id="Non-functional_Functions"></span>
== Niet-functionele functies ==
Een Z8/Functie mag geen bijwerkingen hebben. Alle Z8/Functies moeten functioneel zijn.
Dat wil zeggen, zij moeten dezelfde waarde teruggeven wanneer zij met dezelfde argumenten worden aangeroepen.
Dit betekent dat Z8/Functies zoals "retourneer een willekeurig getal" of "retourneer het huidige tijdstip" niet mogelijk zijn.
This might change in the future.
Dit zal in een later document worden behandeld.
{{Anchor|Zx-sum}}
<span id="Zx/Sum_types"></span>
== Zx/Somtypes ==
Een bijzonder nuttig generiek type is het Zx/Somtype, dat een lijst met Z4/Types gebruikt en een Z4/Type retourneert dat precies één exemplaar van elk van de gegeven typen kan bevatten.
Dit zal ook niet-vereiste parameters in functie-aanroepen mogelijk maken.
Dit zal in een later document worden behandeld.
{{Anchor|questions-todos}}
<span id="Some_questions_and_tasks_to_do"></span>
== Enkele vragen en taken om te doen ==
* Hebben we ergens in het begin een “vereist/optie” nodig voor sleutels? — Nee
* Vervang de standaardwaarden op Z3/Sleutel met Zx/Som? (Of op zijn minst in overeenstemming brengen met Z17/argumentdeclaratie)
* Dat kan later worden gedaan als we Z3 niet standaard willen.
* <span lang="en" dir="ltr" class="mw-content-ltr">Make a note that all is Unicode and that all is the normalization required by MediaWiki</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Rewrite intro to start with normal and then canonicalize</span>
{{Anchor|see-also}}
<span id="See_also"></span>
== Zie ook ==
* [[m:Special:MyLanguage/Abstract Wikipedia/Pre-generic function model|Pre-generiek functiemodel]]
<noinclude>
[[Category:Technical documentation{{#translation:}}|Function model]]
</noinclude>
gljgitey2c5lbaddu98omkg299ucbs9
Translations:Wikifunctions:Function model/4/nl
1198
21999
195810
75403
2025-06-22T08:16:38Z
HanV
6833
195810
wikitext
text/x-wiki
In deze modelbeschrijving verwijzen termen met een hoofdletter naar termen die zijn gedefinieerd in de '''[[$g|woordenlijst]]'''.
0jzszxypky4q1nlk7z74n9x51g57yba
Translations:Wikifunctions:Function model/5/nl
1198
22000
195812
75405
2025-06-22T08:18:29Z
HanV
6833
195812
wikitext
text/x-wiki
Het lezen van de [$walkthrough walkthrough van een eerder prototype] kan voor u nuttig zijn om een betere inzicht te krijgen van wat hier aan de hand is voordat u dit artikel verder leest.
4wivucajr7k2ntpijapa09oe7pkcirc
Translations:Wikifunctions:Function model/11/nl
1198
22014
195816
75434
2025-06-22T08:20:57Z
HanV
6833
195816
wikitext
text/x-wiki
Elke wikipagina van de namespace van ''Wikifuncties'' bevat precies één ZObject van het type Z2/Persistent object.
7fck95q227s1kbbnxgpp7pzchw1dcmc
Translations:Wikifunctions:Function model/12/nl
1198
22015
195814
75436
2025-06-22T08:19:38Z
HanV
6833
195814
wikitext
text/x-wiki
Andere namespaces kunnen andere inhoud bevatten, zoals beleidspagina's, gebruikerspagina's, overlegpagina's, enz.
gdrasv7v9bu807zpz2hmulvwkf8kmxu
Wikifunctions:Status updates
4
22740
195633
193296
2025-06-21T15:29:25Z
DVrandecic (WMF)
7
195633
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<translate><!--T:1--> '''[[<tvar name="sub">:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia</tvar>|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</translate>}}
{{Wikifunctions updates
| prevlabel = <translate><!--T:2--> Previous update</translate>
| prev = 2024-02-01
| nextlabel = <translate><!--T:3--> Last update</translate>
| next = 2025-06-21
}}
<translate><!--T:4-->
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[<tvar name="1">Special:MyLanguage/WF:function of the Week</tvar>|function of the Week]].
<!--T:5-->
You can also subscribe to the [[<tvar name="sub">:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia</tvar>|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
== Newsletters == <!--T:28-->
</translate>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-??-??|2025-??-??]]</bdi></tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2025 ===
* <translate><tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-06-21|2025-06-21]]</bdi></tvar>: Quarterly Planning for July–September 2025</translate>
* <translate><tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-06-15|2025-06-15]]</bdi></tvar>: Closing the consultation about the location of Abstract Content</translate>
* <translate><!--T:75--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-06-06|2025-06-06]]</bdi></tvar>: Where will Abstract Content go?</translate>
* <translate><!--T:74--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-05-29|2025-05-29]]</bdi></tvar>: Rolling out to five Wiktionaries; Calculating with today's date</translate>
* <translate><!--T:73--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-05-23|2025-05-23]]</bdi></tvar>: Ongoing consultation about the Location for Abstract Content</translate>
* <translate><!--T:72--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-05-15|2025-05-15]]</bdi></tvar>: Location of Abstract Content</translate>
* <translate><!--T:71--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-05-09|2025-05-09]]</bdi></tvar>: Abstract Wikipedia and the Wikimedia AI Strategy</translate>
* <translate><!--T:70--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-04-30|2025-04-30]]</bdi></tvar>: Abstract Wikipedia is a MacArthur 100&Change finalist</translate>
* <translate><!--T:69--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-04-25|2025-04-25]]</bdi></tvar>: Welcome, Gregory!</translate>
* <translate><!--T:68--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-04-16|2025-04-16]]</bdi></tvar>: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</translate>
* <translate><!--T:67--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-04-11|2025-04-11]]</bdi></tvar>: Quarter in review</translate>
* <translate><!--T:65--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-04-05|2025-04-05]]</bdi></tvar>: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</translate>
* <translate><!--T:66--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-03-28|2025-03-28]]</bdi></tvar>: It's about time</translate>
* <translate><!--T:64--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-03-20|2025-03-20]]</bdi></tvar>: Wikidata-based simple enumerations</translate>
* <translate><!--T:63--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-03-15|2025-03-15]]</bdi></tvar>: Upcoming NLG meeting, Recent Changes in the software</translate>
* <translate><!--T:62--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-03-07|2025-03-07]]</bdi></tvar>: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</translate>
* <translate><!--T:61--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-02-26|2025-02-26]]</bdi></tvar>: From things to words</translate>
* <translate><!--T:60--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-02-19|2025-02-19]]</bdi></tvar>: A proposal for types per language and part of speech</translate>
* <translate><!--T:59--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-02-13|2025-02-13]]</bdi></tvar>: Restricting the World, redux</translate>
* <translate><!--T:58--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-02-06|2025-02-06]]</bdi></tvar>: Invitation to the Natural Language Generation Special Interest Group</translate>
* <translate><!--T:57--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-01-29|2025-01-29]]</bdi></tvar>: With 2000 Functions into the new year: time for stats</translate>
* <translate><!--T:56--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-01-22|2025-01-22]]</bdi></tvar>: Welcome, David! Naming conventions recommendations</translate>
* <translate><!--T:55--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2025-01-15|2025-01-15]]</bdi></tvar>: Happy Wikipedia day! Quarterly planning</translate>
=== 2024 ===
* <translate><!--T:54--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-12-19|2024-12-19]]</bdi></tvar>: Function of the Week: age; Intros for year articles; New Type: Floating-point number</translate>
* <translate><!--T:53--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-12-12|2024-12-12]]</bdi></tvar>: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</translate>
* <translate><!--T:52--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-11-27|2024-11-27]]</bdi></tvar>: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</translate>
* <translate><!--T:51--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-11-21|2024-11-21]]</bdi></tvar>: New special page for missing labels, new type for Gregorian years, and much more</translate>
* <translate><!--T:50--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-11-13|2024-11-13]]</bdi></tvar>: New Type: Rational number; Documentation on Wikidata-based types; and more</translate>
* <translate><!--T:48--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-11-07|2024-11-07]]</bdi></tvar>: The Dream of a Universal Language</translate>
* <translate><!--T:49--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-11-01|2024-11-01]]</bdi></tvar>: Rewriting the backend</translate>
* <translate><!--T:47--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-10-25|2024-10-25]]</bdi></tvar>: Our goal for this Quarter: Agreement</translate>
* <translate><!--T:45--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-10-17|2024-10-17]]</bdi></tvar>: What could abstract content look like?</translate>
* <translate><!--T:46--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-10-11|2024-10-11]]</bdi></tvar>: Wikidata Lexemes in Wikifunctions are coming soon</translate>
* <translate><!--T:44--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-10-02|2024-10-02]]</bdi></tvar>: Focus topic: Food</translate>
* <translate><!--T:43--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-09-26|2024-09-26]]</bdi></tvar>: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</translate>
* <translate><!--T:42--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-09-20|2024-09-20]]</bdi></tvar>: Introducing focus topic areas</translate>
* <translate><!--T:41--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-09-13|2024-09-13]]</bdi></tvar>: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</translate>
* <translate><!--T:40--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-09-06|2024-09-06]]</bdi></tvar>: Volunteer's corner and other updates</translate>
* <translate><!--T:39--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-08-29|2024-08-29]]</bdi></tvar>: Limits on Name and Description Lengths </translate>
* <translate><!--T:38--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-08-23|2024-08-23]]</bdi></tvar>: WasmEdge, Now 300ms Less Edgy</translate>
* <translate><!--T:37--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-08-16|2024-08-16]]</bdi></tvar>: Wikimania 2024 edition</translate>
* <translate><!--T:36--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-08-02|2024-08-02]]</bdi></tvar>: Revamping our 'About' widget</translate>
* <translate><!--T:35--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-07-26|2024-07-26]]</bdi></tvar>: Wikimania 2024 coming soon!</translate>
* <translate><!--T:34--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-07-18|2024-07-18]]</bdi></tvar>: Research report on integrating Wikifunctions from Wikipedia</translate>
* <translate><!--T:33--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-07-10|2024-07-10]]</bdi></tvar>: Type proposals for accessing Lexemes</translate>
* <translate><!--T:32--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-07-03|2024-07-03]]</bdi></tvar>: Quarterly planning</translate>
* <translate><!--T:31--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-06-26|2024-06-26]]</bdi></tvar>: Welcome, Daphne!</translate>
* <translate><!--T:30--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-06-20|2024-06-20]]</bdi></tvar>: New Type: Integers</translate>
* <translate><!--T:29--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-06-13|2024-06-13]]</bdi></tvar>: New Type: Igbo calendar months</translate>
* <translate><!--T:27--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-06-06|2024-06-06]]</bdi></tvar>: New Type: Sign</translate>
* <translate><!--T:26--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-05-30|2024-05-30]]</bdi></tvar>: A single singular or a plurality of plurals?</translate>
* <translate><!--T:25--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-05-22|2024-05-22]]</bdi></tvar>: New Type: Gregorian calendar months</translate>
* <translate><!--T:24--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|2024-05-15]]</bdi></tvar>: Call for Functions: Spell out the number!</translate>
* <translate><!--T:23--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-05-10|2024-05-10]]</bdi></tvar>: Flagship type for enumerations: Months of the Gregorian calendar</translate>
* <translate><!--T:22--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-05-03|2024-05-03]]</bdi></tvar>: Team meeting and Quarterly plan</translate>
* <translate><!--T:21--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-04-19|2024-04-19]]</bdi></tvar>: Welcome, Sharvani!</translate>
* <translate><!--T:20--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-04-11|2024-04-11]]</bdi></tvar>: New API for calling Wikifunctions and celebrating 1000 functions</translate>
* <translate><!--T:19--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-04-03|2024-04-03]]</bdi></tvar>: Product Update on Diff and Upcoming API Improvements</translate>
* <translate><!--T:18--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-03-28|2024-03-28]]</bdi></tvar>: Creating tests is now much easier!</translate>
* <translate><!--T:17--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-03-21|2024-03-21]]</bdi></tvar>: On the way to internationalizing numbers</translate>
* <translate><!--T:16--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-03-13|2024-03-13]]</bdi></tvar>: On identity</translate>
* <translate><!--T:15--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-03-07|2024-03-07]]</bdi></tvar>: Introducing our second new type: Natural numbers</translate>
* <translate><!--T:14--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-02-28|2024-02-28]]</bdi></tvar>: Type proposal for natural numbers</translate>
* <translate><!--T:13--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-02-22|2024-02-22]]</bdi></tvar>: Updating the function model</translate>
* <translate><!--T:12--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-02-14|2024-02-14]]</bdi></tvar>: Fix-it week</translate>
* <translate><!--T:11--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-02-07|2024-02-07]]</bdi></tvar>: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</translate>
* <translate><!--T:9--> <tvar name="1"><bdi dir="ltr">[[Special:MyLanguage/Wikifunctions:Status updates/2024-02-01|2024-02-01]]</bdi></tvar>: The Igbo Imperative!</translate>
<translate>
=== Before February 2024 === <!--T:7-->
<!--T:10-->
All updates from this period are [[<tvar name="meta">:m:Special:MyLanguage/Abstract Wikipedia/Updates</tvar>|available on Meta-Wiki]].
</translate>
[[Category:Status updates{{#translation:}}| ]]
qtmh36k9n8xl8asuug48zoq4egdlb7d
Wikifunctions talk:Catalogue
5
23874
195693
195631
2025-06-21T20:48:26Z
Arlo Barnes
1231
/* Proposal for restructuring the page */ Reply
195693
wikitext
text/x-wiki
== Uncatalogued functions ==
A list of available functions that are not in the Catalogue (probably with good reason).
'''Please do not edit this list unless the function has been added to the Catalogue.'''
I aim to refresh this list periodically. Edits may be over-written, inadvertently or otherwise. Please let me know of any functions that should not (for whatever reason) be listed in future updates of this list of uncatalogued functions.
[[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 14:28, 19 February 2024 (UTC)
:Surely, most of them should not be listed? The first line is
:<blockquote>This is a '''guided list of example functions provided'''.</blockquote>
:… so it by definition should never have all, or even most, functions, but instead an overview and possibly a link to a more detailed page? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 16:09, 21 February 2024 (UTC)
::I agree. What I meant to say is that I can exclude any functions that should not be included in this list of uncatalogued functions (for whatever reason). I’ll tweak the wording a little. Thank you for highlighting the risk of confusion. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:27, 21 February 2024 (UTC)
Updated February 19th, 2024 (2024-19-02)
===Built-in functions===
*{{Z|Z899}}
*{{Z+|Z888}}
*{{Z|Z886}}
*{{Z|Z885}}
*{{Z|Z883}}
*{{Z+|Z882}}
*{{Z+|Z881}}
*{{Z+|Z876}}
*{{Z|Z868}}
*{{Z+|Z860}}
*{{Z|Z831}}
*{{Z|Z828}}
*{{Z|Z823}}
*{{Z|Z822}}
*{{Z|Z821}}
*{{Z|Z820}}
*{{Z|Z808}}
*{{Z|Z805}}
*{{Z|Z804}}
*{{Z|Z803}}
*{{Z+|Z801}}
===Validator functions===
*{{Z+|Z199}}
*{{Z+|Z186}}
*{{Z+|Z180}}
*{{Z+|Z161}}
*{{Z+|Z160}}
*{{Z+|Z150}}
*{{Z+|Z140}}
*{{Z+|Z139}}
(Other validator functions are currently included within Community functions.)
===Community functions===
(Currently includes some validator functions.)
*{{Z+|Z13300}}
*{{Z+|Z13284}}
*{{Z+|Z13280}}
*{{Z+|Z13262}}
*{{Z+|Z13254}}
*{{Z+|Z13247}}
*{{Z+|Z13224}}
*{{Z+|Z13220}}
*{{Z+|Z13213}}
*{{Z+|Z13206}}
*{{Z+|Z132}}
*{{Z+|Z13177}}
*{{Z+|Z13173}}
*{{Z+|Z13163}}
*{{Z+|Z13155}}
*{{Z+|Z13147}}
*{{Z+|Z13138}}
*{{Z+|Z13124}}
*{{Z+|Z131}}
*{{Z+|Z13085}}
*{{Z+|Z13081}}
*{{Z+|Z13078}}
*{{Z+|Z13076}}
*{{Z+|Z13060}}
*{{Z+|Z13052}}
*{{Z+|Z13034}}
*{{Z+|Z13028}}
*{{Z+|Z13023}}
*{{Z+|Z13017}}
*{{Z+|Z13013}}
*{{Z+|Z13006}}
*{{Z+|Z12997}}
*{{Z+|Z12992}}
*{{Z+|Z12987}}
*{{Z+|Z12982}}
*{{Z+|Z12975}}
*{{Z+|Z12971}}
*{{Z+|Z12938}}
*{{Z+|Z12936}}
*{{Z+|Z12934}}
*{{Z+|Z12932}}
*{{Z+|Z12930}}
*{{Z+|Z12910}}
*{{Z+|Z12908}}
*{{Z+|Z12905}}
*{{Z+|Z12899}}
*{{Z+|Z12884}}
*{{Z+|Z12877}}
*{{Z+|Z12875}}
*{{Z+|Z12856}}
*{{Z+|Z12846}}
*{{Z+|Z12828}}
*{{Z+|Z12818}}
*{{Z+|Z12815}}
*{{Z+|Z12812}}
*{{Z+|Z12801}}
*{{Z+|Z12794}}
*{{Z+|Z12781}}
*{{Z+|Z12753}}
*{{Z+|Z12745}}
*{{Z+|Z12729}}
*{{Z+|Z12727}}
*{{Z+|Z12723}}
*{{Z+|Z12714}}
*{{Z+|Z12712}}
*{{Z+|Z12710}}
*{{Z+|Z12681}}
*{{Z+|Z12676}}
*{{Z+|Z12671}}
*{{Z+|Z12665}}
*{{Z+|Z12636}}
*{{Z+|Z12624}}
*{{Z+|Z12622}}
*{{Z+|Z12617}}
*{{Z+|Z12611}}
*{{Z+|Z12606}}
*{{Z+|Z12602}}
*{{Z+|Z12599}}
*{{Z+|Z12587}}
*{{Z+|Z12578}}
*{{Z+|Z12427}}
*{{Z+|Z12400}}
*{{Z+|Z12391}}
*{{Z+|Z12316}}
*{{Z+|Z12315}}
*{{Z+|Z123}}
*{{Z+|Z12294}}
*{{Z+|Z12262}}
*{{Z+|Z12257}}
*{{Z+|Z12255}}
*{{Z+|Z12247}}
*{{Z+|Z12238}}
*{{Z+|Z12236}}
*{{Z+|Z12234}}
*{{Z+|Z12232}}
*{{Z+|Z12230}}
*{{Z+|Z12228}}
*{{Z+|Z12225}}
*{{Z+|Z12219}}
*{{Z+|Z12217}}
*{{Z+|Z12215}}
*{{Z+|Z122}}
*{{Z+|Z12121}}
*{{Z+|Z121}}
*{{Z+|Z12012}}
*{{Z+|Z120}}
*{{Z+|Z11991}}
*{{Z+|Z11989}}
*{{Z+|Z11987}}
*{{Z+|Z11985}}
*{{Z+|Z11983}}
*{{Z+|Z11978}}
*{{Z+|Z11973}}
*{{Z+|Z11969}}
*{{Z+|Z11961}}
*{{Z+|Z11960}}
*{{Z+|Z11954}}
*{{Z+|Z11949}}
*{{Z+|Z11944}}
*{{Z+|Z11917}}
*{{Z+|Z11903}}
*{{Z+|Z11899}}
*{{Z+|Z11891}}
*{{Z+|Z11884}}
*{{Z+|Z11874}}
*{{Z+|Z11863}}
*{{Z+|Z11849}}
*{{Z+|Z11843}}
*{{Z+|Z11839}}
*{{Z+|Z11815}}
*{{Z+|Z11811}}
*{{Z+|Z118}}
*{{Z+|Z11705}}
*{{Z+|Z117}}
*{{Z+|Z11676}}
*{{Z+|Z11674}}
*{{Z+|Z11672}}
*{{Z+|Z11670}}
*{{Z+|Z11668}}
*{{Z+|Z11651}}
*{{Z+|Z11642}}
*{{Z+|Z11640}}
*{{Z+|Z11602}}
*{{Z+|Z116}}
*{{Z+|Z11585}}
*{{Z+|Z11577}}
*{{Z+|Z11573}}
*{{Z+|Z11564}}
*{{Z+|Z11553}}
*{{Z+|Z11490}}
*{{Z+|Z11484}}
*{{Z+|Z11482}}
*{{Z+|Z11480}}
*{{Z+|Z11478}}
*{{Z+|Z11476}}
*{{Z+|Z11470}}
*{{Z+|Z11461}}
*{{Z+|Z11457}}
*{{Z+|Z11453}}
*{{Z+|Z11449}}
*{{Z+|Z11445}}
*{{Z+|Z11441}}
*{{Z+|Z114}}
*{{Z+|Z11370}}
*{{Z+|Z11366}}
*{{Z+|Z11361}}
*{{Z+|Z11355}}
*{{Z+|Z11342}}
*{{Z+|Z11340}}
*{{Z+|Z11336}}
*{{Z+|Z11332}}
*{{Z+|Z11328}}
*{{Z+|Z11319}}
*{{Z+|Z11314}}
*{{Z+|Z11308}}
*{{Z+|Z11298}}
*{{Z+|Z11289}}
*{{Z+|Z11288}}
*{{Z+|Z11284}}
*{{Z+|Z11277}}
*{{Z+|Z11272}}
*{{Z+|Z11268}}
*{{Z+|Z11264}}
*{{Z+|Z11259}}
*{{Z+|Z11256}}
*{{Z+|Z11254}}
*{{Z+|Z11245}}
*{{Z+|Z11231}}
*{{Z+|Z11208}}
*{{Z+|Z11204}}
*{{Z+|Z112}}
*{{Z+|Z11199}}
*{{Z+|Z11184}}
*{{Z+|Z11165}}
*{{Z+|Z11142}}
*{{Z+|Z11139}}
*{{Z+|Z11129}}
*{{Z+|Z11102}}
*{{Z+|Z111}}
*{{Z+|Z11071}}
*{{Z+|Z11053}}
*{{Z+|Z11049}}
*{{Z+|Z11044}}
*{{Z+|Z11036}}
*{{Z+|Z11019}}
*{{Z+|Z11007}}
*{{Z+|Z11003}}
*{{Z+|Z10993}}
*{{Z+|Z10987}}
*{{Z+|Z10975}}
*{{Z+|Z10938}}
*{{Z+|Z10911}}
*{{Z+|Z10908}}
*{{Z+|Z109}}
*{{Z+|Z10894}}
*{{Z+|Z10891}}
*{{Z+|Z10888}}
*{{Z+|Z10869}}
*{{Z+|Z10866}}
*{{Z+|Z10843}}
*{{Z+|Z10831}}
*{{Z+|Z10821}}
*{{Z+|Z10812}}
*{{Z+|Z10802}}
*{{Z+|Z108}}
*{{Z+|Z10786}}
*{{Z+|Z10785}}
*{{Z+|Z10782}}
*{{Z+|Z10771}}
*{{Z+|Z10770}}
*{{Z+|Z10765}}
*{{Z+|Z10745}}
*{{Z+|Z10742}}
*{{Z+|Z10737}}
*{{Z+|Z10730}}
*{{Z+|Z10725}}
*{{Z+|Z10708}}
*{{Z+|Z107}}
*{{Z+|Z10696}}
*{{Z+|Z10689}}
*{{Z+|Z10682}}
*{{Z+|Z10673}}
*{{Z+|Z10645}}
*{{Z+|Z10641}}
*{{Z+|Z10638}}
*{{Z+|Z10608}}
*{{Z+|Z106}}
*{{Z+|Z10596}}
*{{Z+|Z10567}}
*{{Z+|Z10561}}
*{{Z+|Z10559}}
*{{Z+|Z10553}}
*{{Z+|Z10548}}
*{{Z+|Z10524}}
*{{Z+|Z10507}}
*{{Z+|Z105}}
*{{Z+|Z10499}}
*{{Z+|Z10495}}
*{{Z+|Z10476}}
*{{Z+|Z10475}}
*{{Z+|Z10441}}
*{{Z+|Z10423}}
*{{Z+|Z10410}}
*{{Z+|Z10400}}
*{{Z+|Z104}}
*{{Z+|Z10399}}
*{{Z+|Z10398}}
*{{Z+|Z10397}}
*{{Z+|Z10394}}
*{{Z+|Z10393}}
*{{Z+|Z10390}}
*{{Z+|Z10387}}
*{{Z+|Z10384}}
*{{Z+|Z10379}}
*{{Z+|Z10357}}
*{{Z+|Z10313}}
*{{Z+|Z103}}
*{{Z+|Z10249}}
*{{Z+|Z10225}}
*{{Z+|Z10222}}
*{{Z+|Z102}}
*{{Z+|Z10199}}
*{{Z+|Z10196}}
*{{Z+|Z10188}}
*{{Z+|Z10185}}
*{{Z+|Z10181}}
*{{Z+|Z10178}}
*{{Z+|Z10169}}
*{{Z+|Z10167}}
*{{Z+|Z10157}}
*{{Z+|Z10156}}
*{{Z+|Z10155}}
*{{Z+|Z10154}}
*{{Z+|Z10153}}
*{{Z+|Z10152}}
*{{Z+|Z10151}}
*{{Z+|Z10150}}
*{{Z+|Z10149}}
*{{Z+|Z10147}}
*{{Z+|Z10146}}
*{{Z+|Z10145}}
*{{Z+|Z10144}}
*{{Z+|Z10143}}
*{{Z+|Z10142}}
*{{Z+|Z10141}}
*{{Z+|Z10140}}
*{{Z+|Z10139}}
*{{Z+|Z10138}}
*{{Z+|Z10137}}
*{{Z+|Z10136}}
*{{Z+|Z10135}}
*{{Z+|Z10119}}
*{{Z+|Z10112}}
*{{Z+|Z10108}}
*{{Z+|Z101}}
*{{Z+|Z10095}}
*{{Z+|Z10093}}
*{{Z+|Z10084}}
*{{Z+|Z10057}}
*{{Z+|Z10041}}
*{{Z+|Z10033}}
*{{Z+|Z10029}}
[[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 14:28, 19 February 2024 (UTC)
== Future updates of the Uncatalogued functions list ==
I expect to create a new version of this list in descending order based on the numeric component of each object’s key (its [[Wikifunctions:Glossary#ZID|ZID]]). This will naturally result in the “Community functions” coming to the start of the list, with the most recent first. The “[[Wikifunctions:Glossary#validator|Validator]] functions” would all be grouped together at the bottom and the “[[Wikifunctions:Glossary#built-in|Built-in]] functions after the Community functions and before the validators. Alternatives to this will be considered. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:28, 22 February 2024 (UTC)
Also, should I put it here, in a sub-page or as a separate Wikifunctions page? (I’m not working on it at the moment but I’ll probably put it here again if no alternative is agreed by the time it’s ready.) --[[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 00:35, 23 February 2024 (UTC)
== Dividing the catalogue ==
{{ping|theklan}} These are too small to be their own subpages. Please move them back. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 18:31, 6 November 2024 (UTC)
:The catalogue is supposed to be a monolithic and at-a-glance directory. Subpages are counterproductive and unhelpful. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 18:32, 6 November 2024 (UTC)
::Well, not if we are going to have functions for all languages. Making it pretty and organized helps navigating. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 18:33, 6 November 2024 (UTC)
:::I'm ok with natural language operations being their own page. What I'm not ok with are these pages with only a few items. They add more unnecessary clicks. I'm ok with you keeping the new pages you created, but please revert your edits on the main catalogue page. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 18:35, 6 November 2024 (UTC)
:::Also, I'm planning to edit the catalogue page to make it more visual, with a gallery and so on. Trust me, it will be nice! [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 18:35, 6 November 2024 (UTC)
::::Alright. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 18:37, 6 November 2024 (UTC)
:::::However, I understand your point for some being too small. Especially, "Programming" and the two about objects seem really short. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 18:39, 6 November 2024 (UTC)
:::::I have added a SVG translatable logo. It can be translated using [https://svgtranslate.toolforge.org/File:Wikifunctions-logo-logic-operators.svg SVG Translate]. Let me know if this is a better solution than the growing list. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 19:13, 6 November 2024 (UTC)
::::::The icons are nice, but unreadable in dark-mode. Could the circles be outlined or backgrounded in a light colour, along the lines of [[commons:GNOME High contrast icons]]? [[User:Arlo Barnes|Arlo Barnes]] ([[User talk:Arlo Barnes|talk]]) 02:49, 8 November 2024 (UTC)
:::::::I'm not such a fan of the icons in the first place. If they were all different to one another, that would give a visual cue as to which one to click, but at the moment they're all the same, just with the text repeated in an image. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:23, 8 November 2024 (UTC)
::::::::{{ping|Theklan}} can you please do this? [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 04:32, 8 November 2024 (UTC)
:::::::::Specifically I'd prefer if we used colored icons. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 04:32, 8 November 2024 (UTC)
::::::::We could imagine symbols and colors for some of them, but the amount of colors needed could make it a little bit baroque. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 06:54, 8 November 2024 (UTC)
:::::::::I disagree. 16 is completely reasonable. Here is one I made:
:::::::::Deep Blue: #001F3F
:::::::::Sky Blue: #39CCCC
:::::::::Muted Green: #77B300
:::::::::Bright Green: #01FF70
:::::::::Golden Yellow: #FFDC00
:::::::::Muted Orange: #FF851B
:::::::::Deep Red: #B03060
:::::::::Light Pink: #F012BE
:::::::::Purple: #8E44AD
:::::::::Lavender: #B10DC9
:::::::::Brown: #A0522D
:::::::::Beige: #FFFAF0
:::::::::Light Gray: #D3D3D3
:::::::::Medium Gray: #858585
:::::::::Charcoal Gray: #333333
:::::::::Off-White: #F8F8FF
:::::::::Feel free to use it or something like this :) [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 06:58, 8 November 2024 (UTC)
::::::::::The problem with that is that there's a color guide: [https://doc.wikimedia.org/codex/latest/design-tokens/color.html Codex Color Guide] -[[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 07:20, 8 November 2024 (UTC)
:::::::::::So? Ignore it. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 07:25, 8 November 2024 (UTC)
:::::::::::The color guide isn't really relevant here. I think you are misinterpreting it. How I'm perceiving the color guide is a way to standardize color messaging. This is not needed here, as these are just colors for the sake of coloring, not to get messages across. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 07:30, 8 November 2024 (UTC)
::::::::::::There are some color rules for Wikimedia projects, as you can see in the colored logo of Wikifunctions. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 07:40, 8 November 2024 (UTC)
:::::::::::::The color guide doesn't say these are rules? [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 07:47, 8 November 2024 (UTC)
:::::::::::::"To maintain a scalable and consistent visual system for user-interface (UI) development in a single source of truth instead of hard-coded style values or single-use variables" These do not appear to be rules, rather strong recommendations. I say we throw these out. Our idea is inherently single use. Using the colors would be ''very'' counterproductive, given standard meaning across Wikimedia projects. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 07:52, 8 November 2024 (UTC)
::::::::I have added a symbol for the logic operators and a color. Before continuing and changing everything, I would like to know if this makes more sense. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 07:21, 8 November 2024 (UTC)
:::::::::The symbol is a Boolean algebra symbol? Why is it under logic operations??? [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 07:34, 8 November 2024 (UTC)
::::::::::What would a good symbol representing "logic operations" be? Remember that we must find something that feels universal. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 07:39, 8 November 2024 (UTC)
:::::::::::A diamond or an arrow? [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 07:46, 8 November 2024 (UTC)
:::::::::Yes, this is a big improvement, thanks. That one would go particularly well with "Boolean operations". The category currently called "logic operations" could also be called "control statements". I'd suggest some kind of branching structure. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 07:44, 8 November 2024 (UTC)
::::::::::I'd go with an arrow (flow, control) or diamond (flow charts) [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 07:48, 8 November 2024 (UTC)
::::::::::That kind of divisions is out of my knowledge. I can help with the logos and overall image. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 07:49, 8 November 2024 (UTC)
::::::::::I have added the first three changes. It will take a while till I can make everyting, as making a different logo is more demanding. The code needs to be cleaned every time... well, not as easy as just changing the text. I can't see the three first logos with their color in the main page, there may be a cache issue with that. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 09:00, 8 November 2024 (UTC)
:::::::I have made some changes with stroke for dark mode. I would prefer if css variants could be added to the svg itself, but I haven't been able to do that. So let be a stroke. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 08:16, 8 November 2024 (UTC)
::::::::I have undone the stroke thing, because it seems that stroking makes impossible to translate the texts using SVGtranslate. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 08:27, 8 November 2024 (UTC)
::::I'm ok with you changing it, just don't make it too difficult to navigate. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 18:39, 6 November 2024 (UTC)
:::::The problem I see is that now is very difficult to navigate, as you have to go down a growingly long list. I'm planning to add a large table (like the Breton one) for Basque, and this is very distracting for people not interested on that. The actual byte lenght is small, but the vertical scrolling size of the page makes it complex to load. I also have some doubts on the template expansion limit. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 18:40, 6 November 2024 (UTC)
::::::I'd recommend you follow the ideas of [[wf:broad]]. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 18:43, 6 November 2024 (UTC)
:::::::The problem is that every language is different, and making broad things is not always the most convenient solution. [[User:Theklan|Theklan]] ([[User talk:Theklan|talk]]) 19:12, 6 November 2024 (UTC)
::::::::I agree that every language is different. What I am very much apposed to is you having tens of functions to just add something to a string. This should not happen. Instead, group some of them together to easily differentiate. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 19:26, 6 November 2024 (UTC)
::<blockquote>The catalogue is supposed to be a monolithic and at-a-glance directory</blockquote>
::No, it's not, it's meant to be a "best of" highlights page to help people be inspired and find a first function. A bunch of sub-pages doesn't meet that, but neither does a complete index. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 19:44, 7 November 2024 (UTC)
:::I was misinterpreting what he was trying to do, please ignore. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 19:53, 7 November 2024 (UTC)
== Proposal for restructuring the page ==
I love the Catalogue and find it the most important place to find the existing functions. Theklan already improved this page massively last fall, and I want to go further. I feel like the current 19 different sections are a few too many, and also are partially confusing. I am suggesting a smaller number of more comprehensive categories:
# '''Text & Language''': natural language generation, strings, characters, etc.
# '''Art & Humanities''': colors, music, economics, etc.
# '''Science & Engineering''': chemistry, physics, biology, measurements, electrical engineering, technology, etc.
# '''Mathematics & Logic''': including all arithmetic, boolean, and similar functions
# '''Time & Space''': about dates, times, coordinates, etc.
# '''Programming & Wikimedia''': code flow, functional functions, related to types, meta-programming, accessing Wikidata, Wikifunctions-specific functions, etc.
I am not sure about anything of this: the names (for example, "Text & Language" could also be "Natural language generation", or "Writing text"; "Art & Humanities" could also be "Liberal arts"; for "Programming & Wikimedia" I was thinking just calling it "Meta", but that's potentially confusing. Or it could be split up into two, I feel like this title is the least coherent here).
Note that these are not necessarily disjoint groups, and don't have to (this is a wiki and thus hypertext, after all). Parts in logic may well overlap with part of programming, parts of Science and Engineering are probably repeated in the Time & Space section, etc. And that's OK.
Also, I assume that this is the first-level subdivision, and that there is a second-level subdivision behind these categories, or else they would become very unwieldy.
So, this is just a proposal, I am happy with counterproposals or refinements, but the goal is to make it more friendly to the wider audience and being more welcoming, and to reduce the number of top-level categories. Thoughts? --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 19:57, 19 June 2025 (UTC)
:Approximately how many second-level divisions per top-level? Sounds like a good proposal if its not just moving the complexity more out of sight. I do think 'Meta' would be confusing. [[User:Arlo Barnes|Arlo Barnes]] ([[User talk:Arlo Barnes|talk]]) 20:48, 21 June 2025 (UTC)
ir2cy7b5vxbuu6sy7jups1707529tzg
Wikifunctions:Programming languages
4
24444
195682
157419
2025-06-21T19:36:13Z
Eduardogobi
2982
Javascript to JavaScript
195682
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
<translate>
<!--T:1-->
See also <tvar name="1">{{ll|Wikifunctions:Human languages}}</tvar> and [[w:en:Lists of programming languages|Lists of programming languages]] in Wikipedia. [[<tvar name="2">Special:MyLanguage/WF:glossary#composition</tvar>|Compositions]] are a kind of language, but aren't covered here.
== Executable == <!--T:2-->
=== Implemented === <!--T:3-->
<!--T:4-->
As of March 2024 the following languages compile to [[<tvar name="1">meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25</tvar>|WASM]] to be run by the [[<tvar name="2">Special:MyLanguage/WF:glossary#executor</tvar>|executor]]:
</translate>
* <translate><!--T:5--> unversioned JavaScript ([<tvar name="1">https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy</tvar> W3C Software and Document Notice and License], [<tvar name="2">https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license</tvar> src]), using [<tvar name="3">https://github.com/second-state/wasmedge-quickjs</tvar> WasmEdge-QuickJS] (using [<tvar name="4">https://bellard.org/quickjs/</tvar> QuickJS 2024], compatible with ES2023)</translate>
* <translate><!--T:6--> unversioned Python ([<tvar name="1">https://docs.python.org/3/license.html</tvar> PSF License Agreement], Zero-Clause BSD), using the development version of [<tvar name="2">https://github.com/RustPython/RustPython</tvar> RustPython] WASI mode (this is intended to be compatible with CPython 3.12)</translate>
<translate>
=== Planned === <!--T:7-->
</translate>
* <translate><!--T:8--> versioned JavaScript (ECMA202?+)</translate>
* <translate><!--T:9--> versioned Python (3+)</translate>
<translate>
=== Requested === <!--T:10-->
<!--T:11-->
See the [[<tvar name="1">phab:tag/wikifunctions-new-language-requests</tvar>|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</translate>
* <translate><!--T:12--> <tvar name="1">[[phab:T352589|T352589]]</tvar>: LabView/G<!--[<tvar name="2">https://ni.com/en/support/downloads/activate.html</tvar> proprietary]--> via pyLabView ([<tvar name="3">https://github.com/mefistotelis/pylabview/blob/master/LICENSE</tvar> MIT])</translate>
* <translate><!--T:13--> <tvar name="1">[[phab:T352588|T352588]]</tvar>: Kotlin ([<tvar name="2">https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE</tvar> Apache])</translate>
* <translate><!--T:14--> <tvar name="1">[[phab:T307171|T307171]]</tvar>: Lua ([<tvar name="2">https://lua.org/license.html</tvar> MIT])</translate>
* <translate><!--T:15--> <tvar name="1">[[phab:T301418|T301418]]</tvar>: Scratch/Snap!/Logolike ([<tvar name="2">https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE</tvar> BSD 3-Clause], GPLv2 and Scratch Source Code License)</translate>
* <translate><!--T:16--> <tvar name="1">[[phab:T298633|T298633]]</tvar>: Vlojure ([<tvar name="2">https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE</tvar> MIT])</translate>
<translate>
=== Former === <!--T:17-->
<!--T:18-->
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
== Functions for manipulating == <!--T:19-->
</translate>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
hwyzejnhdrxqpgv903vt9qnb4w85r8u
Z15256
0
28421
195711
189242
2025-06-21T23:05:26Z
WikiLambda system
3
Updated the implementation list
195711
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z15256"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z15256K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "n"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "n"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "nombre à tester"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "n"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "n"
}
]
}
}
],
"Z8K2": "Z13518",
"Z8K3": [
"Z20",
"Z15258",
"Z15259",
"Z15260",
"Z15384",
"Z24791"
],
"Z8K4": [
"Z14",
"Z24786",
"Z24554",
"Z15261"
],
"Z8K5": "Z15256"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "natural number square root"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "integer square mgborọgwụ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "racine carrée entière d'un nombre naturel"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "ganzzahlige Quadratwurzel"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "radice quadrata di numero naturale"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"A000196",
"isqrt"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"radq naturale",
"radice quadrata da naturale a naturale",
"radice quadrata (naturale in naturale)"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "calcule la racine carrée entière d'un nombre naturel"
}
]
}
}
jpv3ojvengwdtfeolbvkuxour7czfdz
Z17869
0
34120
195705
187088
2025-06-21T22:07:33Z
WikiLambda system
3
Updated the implementation list
195705
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z17869"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z16683"
},
"Z17K2": "Z17869K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of integers to sort"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lista di interi"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z16683"
},
"Z8K3": [
"Z20",
"Z17871",
"Z24664"
],
"Z8K4": [
"Z14",
"Z19164",
"Z21287",
"Z17872"
],
"Z8K5": "Z17869"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "sort list ascending (integers)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "ordina lista di interi in ordine crescente"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"ascending order",
"sort ascending",
"sort list of integers ascending"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"ordine crescente",
"ordine ascendente"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "reorders a list of integers so it is in ascending order"
}
]
}
}
d60gutthicjjgzv3bystxw2kbij09ss
Z20438
0
43822
195647
145688
2025-06-21T18:41:31Z
DMartin (WMF)
24
Changed "year" to "date" in the English label
195647
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z20438"
},
"Z2K2": {
"Z1K1": "Z46",
"Z46K1": "Z20438",
"Z46K2": "Z20420",
"Z46K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z20438( Z20438K1 ) {\n\tlet era = Z20438K1.Z20420K1.Z20159K1;\n\tif (typeof era === 'object') {\n\t\tif ( 'Z17813K1' in era ) {\n\t\t\tera = era.Z17813K1;\n\t\t}\n\t}\n\tif (typeof era === 'object') {\n\t\tif ( 'Z9K1' in era ) {\n\t\t\tera = era.Z9K1;\n\t\t}\n\t}\n\t\n\tlet year = Z20438K1.Z20420K1.Z20159K2.Z13518K1;\n\tif (typeof year !== 'string') {\n\t\tif ( 'Z6K1' in year ) {\n\t\t\tyear = year.Z6K1;\n\t\t}\n\t}\n\t\n\tlet month = Z20438K1.Z20420K2.Z20342K1;\n\tif (typeof month === 'object') {\n\t\tif ( 'Z16098K1' in month ) {\n\t\t\tmonth = month.Z16098K1;\n\t\t}\n\t}\n\tif (typeof month === 'object') {\n\t\tif ( 'Z9K1' in month ) {\n\t\t\tmonth = month.Z9K1;\n\t\t}\n\t}\n\t// (I think?) month can safely be a number, because it should only be from 0-11\n\tmonth = parseInt(month.split(\"Z\")[1]);\n\tmonth = month - 16101;\n\t// If for some reason something that's not a month gets in here, throw.\n\tif (month \u003C 0 || month \u003E 11) {\n\t\tthrow new Error(\"Received non-month ZObject\");\n\t}\n\t\n\tlet day = Z20438K1.Z20420K2.Z20342K2.Z13518K1;\n\tif (typeof day !== 'string') {\n\t\tif ( 'Z6K1' in day ) {\n\t\t\tday = day.Z6K1;\n\t\t}\n\t}\n\tday = parseInt( day );\n\t\n\tyear = BigInt( year );\n\tif ( era == \"Z17815\" ) {\n\t\tyear = year * -1n + 1n;\n\t}\n\n\treturn {\n\t\t'K1': year,\n\t\t'K2': month,\n\t\t'K3': day\n\t};\n}"
},
"Z46K4": "Object"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "JavaScript converter from Gregorian calendar date"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
4tyhzyq8704dsg4j6k6xucq0xgjbw2e
Z21804
0
48062
195707
158848
2025-06-21T22:30:28Z
SRG372
12739
195707
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z21804"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z21802",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z21216",
"Z21216K1": {
"Z1K1": "Z7",
"Z7K1": "Z14310",
"Z14310K1": "Z21795",
"Z14310K2": {
"Z1K1": "Z18",
"Z18K1": "Z21802K4"
}
},
"Z21216K2": {
"Z1K1": "Z7",
"Z7K1": "Z21803",
"Z21803K1": {
"Z1K1": "Z18",
"Z18K1": "Z21802K1"
},
"Z21803K2": {
"Z1K1": "Z18",
"Z18K1": "Z21802K4"
}
},
"Z21216K3": {
"Z1K1": "Z7",
"Z7K1": "Z21803",
"Z21803K1": {
"Z1K1": "Z18",
"Z18K1": "Z21802K2"
},
"Z21803K2": {
"Z1K1": "Z18",
"Z18K1": "Z21802K4"
}
},
"Z21216K4": {
"Z1K1": "Z18",
"Z18K1": "Z21802K3"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "\"[genre] is a [pays] [profession]\", en Composition"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[gender] is a [country] [profesional], composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pkv867icenms9f12u6zyob75vsyvwqq
Wikifunctions:Requests for deletions/Archive/2025/06
4
58070
195713
191227
2025-06-22T03:08:15Z
SpBot
978
archiving 2 sections from [[Wikifunctions:Requests for deletions]] (after section [[Wikifunctions:Requests for deletions/Archive/2025/06#pbkdf2_hmac|pbkdf2_hmac]])
195713
wikitext
text/x-wiki
{{Talkarchive}}
== [[Z20595]] ==
This is a straight duplicate of [[Z20594]] from the same user a second earlier; probably a bug at our end letting a double-click publish both. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 22:11, 3 June 2025 (UTC)
:{{done}} -- [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 23:27, 3 June 2025 (UTC)
::<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 05:10, 4 June 2025 (UTC)</small>
== pbkdf2_hmac ==
{{z|Z10157}} shouldn't exist since pbkdf2_hmac is defined as taking a hash function name and a salt as additional inputs to the password. The function should be split up into functions like pbkdf2_hmac_sha1 and pbkdf2_hmac_sha256. [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 16:09, 17 June 2025 (UTC)
:CC author @[[User:GZWDer|GZWDer]] for their thoughts. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 16:27, 17 June 2025 (UTC)
:On second thought, {{d}} since this has been empty since the nearly 2 years. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 16:30, 17 June 2025 (UTC)
::<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:17, 20 June 2025 (UTC)</small>
== ChaCha20 tests ==
Please delete {{z|Z25388}} and {{z|Z25389}} as they're both pointless and impossible now since the types were changed from Integer to Natural number, which can, by definition, not be negative. [[User:Laura240406|Laura240406]] ([[User talk:Laura240406|talk]]) 08:39, 20 June 2025 (UTC)
:{{d}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:15, 20 June 2025 (UTC)
::<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:17, 20 June 2025 (UTC)</small>
ma355wxjyoxtmj9k4x36rg8fwkj7wux
Category:Contents/zh-hant
14
58401
195722
192268
2025-06-22T04:44:11Z
Winston Sung
2672
Created page with "維基函式庫根分類。"
195722
wikitext
text/x-wiki
<languages/>
維基函式庫根分類。
r4vm20j8ohjqrdocz2hynih44q5tdrm
Z25200
0
58627
195641
193070
2025-06-21T15:46:05Z
Dv103
11127
+it
195641
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25200"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z19677",
"Z17K2": "Z25200K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "rational to test"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "razionale"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z25201",
"Z25202",
"Z25203",
"Z25204"
],
"Z8K4": [
"Z14",
"Z25205"
],
"Z8K5": "Z25200"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is rational number 1?"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "è numero razionale 1?"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"=1",
"==1",
"=1/1",
"==1/1",
"is 1",
"is rational 1"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"è uguale a 1",
"è 1",
"è razionale 1",
"è frazione 1"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "only true if the argument is equal to 1/1 (including unsimplified n/n)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce vero se l'argomento è uguale a 1 (inclusi i valori non semplificati n/n)"
}
]
}
}
6a34lrfjk6aklrm7jfu981vig5175kg
Z25294
0
58772
195637
194253
2025-06-21T15:39:05Z
Dv103
11127
+it
195637
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25294"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25294K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità"
}
]
}
}
],
"Z8K2": "Z19677",
"Z8K3": [
"Z20",
"Z25296"
],
"Z8K4": [
"Z14",
"Z25295"
],
"Z8K5": "Z25294"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "amount from quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণের মূল মান"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore da quantità WiKidata"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"value from quantity",
"value of quantity"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"উইকিউপাত্ত পরিমাণ থেকে পরিমাণ",
"উইকিউপাত্ত পরিমাণের মান",
"পরিমাণের প্রথম নির্দেশক"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the first key (Z6010K1) of a quantity as a rational number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "প্রদত্ত উইকিউপাত্ত পরিমাণের প্রথম নির্দেশকটি মুলদ সংখ্যা রূপে ফেরত দেয়।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce la prima chiave (Z6010K1) di una quantità Wikidata come numero razionale"
}
]
}
}
p4it2yuxqzbkxuxuom40h072y4vqfv0
195638
195637
2025-06-21T15:39:17Z
Dv103
11127
typo
195638
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25294"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25294K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità"
}
]
}
}
],
"Z8K2": "Z19677",
"Z8K3": [
"Z20",
"Z25296"
],
"Z8K4": [
"Z14",
"Z25295"
],
"Z8K5": "Z25294"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "amount from quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণের মূল মান"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore da quantità Wikidata"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"value from quantity",
"value of quantity"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"উইকিউপাত্ত পরিমাণ থেকে পরিমাণ",
"উইকিউপাত্ত পরিমাণের মান",
"পরিমাণের প্রথম নির্দেশক"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the first key (Z6010K1) of a quantity as a rational number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "প্রদত্ত উইকিউপাত্ত পরিমাণের প্রথম নির্দেশকটি মুলদ সংখ্যা রূপে ফেরত দেয়।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce la prima chiave (Z6010K1) di una quantità Wikidata come numero razionale"
}
]
}
}
d23h0l61flg6te792fup6lujjnk4qy5
Z25297
0
58777
195636
194254
2025-06-21T15:37:25Z
Dv103
11127
+it
195636
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25297"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25297K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità"
}
]
}
}
],
"Z8K2": "Z19677",
"Z8K3": [
"Z20",
"Z25299"
],
"Z8K4": [
"Z14",
"Z25298"
],
"Z8K5": "Z25297"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lower bound from quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণের নিম্নসীমা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "limite inferiore da quantità Wikidata"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"উইকিউপাত্ত পরিমাণের নিম্নসীমা"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the second key (Z6010K2) of a quantity as a rational number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "প্রদত্ত উইকিউপাত্ত পরিমাণের দ্বিতীয় নির্দেশকটিকে একটি মুলদ সংখ্যা রূপে ফেরত দেয়। "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce la seconda chiave (Z6010K2) di una quantità Wikidata come numero razionale"
}
]
}
}
hbdplx84hflo1bu32v5yv5sabk63ujv
Z25300
0
58790
195635
194255
2025-06-21T15:36:29Z
Dv103
11127
+it
195635
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25300"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25300K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità"
}
]
}
}
],
"Z8K2": "Z19677",
"Z8K3": [
"Z20",
"Z25302"
],
"Z8K4": [
"Z14",
"Z25301"
],
"Z8K5": "Z25300"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "upper bound from quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণের উর্দ্ধসীমা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "limite superiore da quantità Wikidata"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the third key (Z6010K3) of a quantity as a rational number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "প্রদত্ত উইকিউপাত্ত পরিমাণের তৃতীয় নির্দেশকটিকে একটি মুলদ সংখ্যা রূপে ফেরত দেয়।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce la terza chiave (Z6010K3) di una quantità come numero razionale"
}
]
}
}
g1ikirzanlpgqn7swsp8fsumuluwljo
Z25306
0
58844
195639
195042
2025-06-21T15:41:45Z
Dv103
11127
+it
195639
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25306"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25306K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিমাণ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z25308",
"Z25309"
],
"Z8K4": [
"Z14",
"Z25307"
],
"Z8K5": "Z25306"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "are bounds equal to value?"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "সীমানাদ্বয় কি মানের সমান?"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "limiti di quantità Wikidata sono uguali al valore?"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"zero uncertainty",
"0 uncertainty",
"±0",
"exact value",
"is exact value",
"bounds are equal to value",
"no uncertainty",
"uncertainty is zero",
"is exact quantity",
"quantity is exact"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"শূন্য অনিশ্চয়তা",
"কি সঠিক মান"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"zero incertezza",
"0 incertezza",
"valore esatto",
"è valore esatto",
"non ha incertezza",
"incertezza nulla",
"quantità è senza incertezza",
"quantità è esatta",
"quantità esatta"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns true if the lower and upper bounds of the quantity are equal to its value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "যদি পরিমাণের নিম্ন এবং উর্দ্ধ সীমানা এর মানের সমান হয়, তাহলে সত্য প্রদান করে"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce vero se i limiti inferiore e superiore sono uguali al valore"
}
]
}
}
9wib9ycqxo4kslhdmqinfeajxwn64t0
Z25310
0
58848
195640
193961
2025-06-21T15:44:02Z
Dv103
11127
+it
195640
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25310"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25310K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z25311",
"Z25313",
"Z25314"
],
"Z8K4": [
"Z14",
"Z25312"
],
"Z8K5": "Z25310"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "are bounds symmetric?"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "limiti di quantità Wikidata sono simmetrici?"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"bounds are symmetric",
"bounds are equally spaced",
"equally spaced bounds",
"plus and minus equal",
"plus or minus equal",
"equal plus or minus",
"uncertainties are symmetric",
"uncertainty is symmetric"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"distribuzione simmetrica",
"limiti equispaziati",
"range simmetrico",
"incertezza simmetrica"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns true if the best value is halfway between the lower and upper bounds"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce vero se il valore è a metà tra i due limiti"
}
]
}
}
pvd3fyg85ho5lrj2lwvhseuaqrd1i5s
User:Laura240406
2
58942
195706
195144
2025-06-21T22:20:00Z
Laura240406
11557
/* My functions */
195706
wikitext
text/x-wiki
Hey, you can primarily find me on the English Wikipedia but I'm also lurking here :D
== My functions ==
* {{z|Z25376}}
* {{z|Z25393}}
* {{z|Z25399}}
* {{z|Z25416}}
* {{z|Z25419}}
* {{z|Z25404}}
* {{z|Z25491}}
* {{z|Z25557}}
ef8zib1k6h1821ipqrn9vpmf8b490lj
User:Laura240406/common.js
2
58959
195739
195397
2025-06-22T06:51:00Z
Laura240406
11557
195739
javascript
text/javascript
mw.loader.using(['mediawiki.util'], () => {
const link = mw.util.addPortletLink(mw.config.get('skin') === 'minerva' ? 'p-tb' : 'p-cactions', '#', 'Tabs to spaces', 'tabs2spaces');
link.addEventListener('click', async (event) => {
event.preventDefault();
console.log(document.getElementsByClassName("ace_editor"));
try {
let editor = ace.edit(document.getElementsByClassName("ace_editor")[0]);
mw.notify('Converted tabs to spaces', { type: 'success', tag: 'tabs2spaces-notification' });
} catch (error) {
return mw.notify('Editor field not found', { type: 'error', tag: 'tabs2spaces-notification' });
}
});
});
mw.loader.load( '//www.wikifunctions.org/w/index.php?title=User:Feeglgeef/wikilambda_editsource.js&action=raw&ctype=text/javascript' );
mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:Eejit43/scripts/null-edit.js&action=raw&ctype=text/javascript' );
6qv4mr8v0640u5zgdkxsb04oowpos0z
Translations:Wikifunctions:Glossary/198/nl
1198
59248
195777
195596
2025-06-22T07:55:21Z
HanV
6833
195777
wikitext
text/x-wiki
De actie die door de [[$evaluator|evaluator]] wordt uitgevoerd.
9v3dfxer3axlqwi717y7e0r754fs8dm
Translations:Wikifunctions:Glossary/202/nl
1198
59250
195779
195602
2025-06-22T07:57:03Z
HanV
6833
195779
wikitext
text/x-wiki
De actie die door de [[$executor|executor]] wordt uitgevoerd.
29czhzov96sbnh79one5rzn62e8nk5w
Translations:Wikifunctions:Glossary/208/nl
1198
59258
195783
195618
2025-06-22T08:02:06Z
HanV
6833
195783
wikitext
text/x-wiki
een set vooraf gedefinieerde ZObjecten die gebruikt worden in [[$orchestrator|orchestrator]] en [[$evaluator|evaluator]]. Het [[$wikiLambda-system|WikiLambda systeemaccount]] vult ook vooraf gedefinieerde ZObjecten on-wiki vanuit functie schemata.
j6867j80d2hlraj9jm6l4o90u1c3fh8
Translations:Wikifunctions:Glossary/196/nl
1198
59260
195781
195623
2025-06-22T07:58:41Z
HanV
6833
195781
wikitext
text/x-wiki
De actie die door de [[$orchestrator|orchestrator]] wordt uitgevoerd.
0efft4glax72b243lh99zv0111hsdt3
Wikifunctions:Status updates/2025-06-21
4
59263
195634
2025-06-21T15:30:08Z
DVrandecic (WMF)
7
Created page with "=== Fresh Functions weekly: 72 new Functions === This week we had 72 new Functions. Wohoo!. Here is a list of functions with implementations and passing tests to get a taste of what Functions have been created. Thanks everybody for contributing! * {{Z|Z25060}} * {{Z|Z25073}} * {{Z|Z25082}} * {{Z|Z25085}} * {{Z|Z25088}} * {{Z|Z25091}} * {{Z|Z25094}} * {{Z|Z25098}} * {{Z|Z25102}} * {{Z|Z25108}} * {{Z|Z25113}} * {{Z|Z25152}} * {{Z|Z25167}} * {{Z|Z25179}} * {{Z|Z25187}} * {{..."
195634
wikitext
text/x-wiki
=== Fresh Functions weekly: 72 new Functions ===
This week we had 72 new Functions. Wohoo!. Here is a list of functions with implementations and passing tests to get a taste of what Functions have been created. Thanks everybody for contributing!
* {{Z|Z25060}}
* {{Z|Z25073}}
* {{Z|Z25082}}
* {{Z|Z25085}}
* {{Z|Z25088}}
* {{Z|Z25091}}
* {{Z|Z25094}}
* {{Z|Z25098}}
* {{Z|Z25102}}
* {{Z|Z25108}}
* {{Z|Z25113}}
* {{Z|Z25152}}
* {{Z|Z25167}}
* {{Z|Z25179}}
* {{Z|Z25187}}
* {{Z|Z25191}}
* {{Z|Z25196}}
* {{Z|Z25200}}
* {{Z|Z25207}}
* {{Z|Z25217}}
* {{Z|Z25219}}
* {{Z|Z25220}}
* {{Z|Z25224}}
* {{Z|Z25227}}
* {{Z|Z25230}}
* {{Z|Z25232}}
* {{Z|Z25248}}
* {{Z|Z25262}}
* {{Z|Z25266}}
* {{Z|Z25271}}
* {{Z|Z25276}}
* {{Z|Z25280}}
* {{Z|Z25286}}
* {{Z|Z25294}}
* {{Z|Z25297}}
* {{Z|Z25300}}
* {{Z|Z25303}}
* {{Z|Z25306}}
* {{Z|Z25310}}
* {{Z|Z25315}}
* {{Z|Z25318}}
* {{Z|Z25341}}
A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all Functions sorted by when they were created] is available.
occl9bd12hdpv997k8kypk3jplzrw2t
195642
195634
2025-06-21T16:26:21Z
DVrandecic (WMF)
7
195642
wikitext
text/x-wiki
=== News in Types ===
==== A few new built-in Types ====
In order to support Wikidata data better, we have introduced a few built-in Types: [[Z6064|Wikidata time]], [[Z6010|Wikidata quantity]], and [[Z6011|Wikidata geo-coordinates]]. This week we deployed code that instantiates these new Types. Values of these 3 Types appear in statements inside of larger ZObjects containing Wikidata content, such as [[Z6001|Wikidata item]] and [[Z6005|Wikidata lexeme]]. These values are instantiated when one of the Wikidata fetch Functions is called, such as [[Z6821|Fetch Wikidata item]] and [[Z6825|Fetch Wikidata lexeme]].
However, there are still some loose ends to be tidied up with respect to these three new Types:
* Each of them relies on existing Types such as [[Z13518|Natural number]], [[Z19677|Rational number]], and [[Z20342|Day of Roman year]]. We are noticing that the UI intermittently shows error messages from the display Functions for these Types. We believe this may be related to the current slowness in displaying large Wikidata entities. There is work underway that will yield a major improvement in this area. Until that work gets deployed, it is possible to bypass an error message and see the values by clicking on the relevant chevron (>) to open up the detailed view.
* As noted on the [[Wikifunctions:Project chat#Indicating unknown day/month values in Day of Roman Year|Project chat page]], Functions related to [[Z20342|Day of Roman year]] may still need to be updated to handle a couple new conventions that we’ve adopted for unknown month and unknown year.
Please be mindful of these loose ends when writing implementations for the new Types, but as you can see in the next section, a lot of Functions have already been written for them. A few discussions about converters have already started. Thanks everyone!
==== Lightweight enum Types ====
The new "lightweight enum Type" capability, previously mentioned in the [[Wikifunctions:Status#What are we working on this Quarter? (April–June 2025)|Status page]], is now available.
A lightweight enumeration Type is a collection of Wikidata entity references, which are the possible values of the Type. Each instance of the Type is a small wrapper around one of the possible values. There are currently 5 initial examples of lightweight enum Types:
* [[Z25340|Grammatical gender (m/f)]], for masculine and feminine genders
* [[Z25501|Grammatical gender (m/f/n)]], for masculine / feminine / neuter genders
* [[Z25502|Grammatical gender (c/n)]], for common and neuter genders
* [[Z6063|Wikidata calendar model]], currently referencing Gregorian and Julian calendars
* [[Z6062|Wikidata time precision]], listing 15 levels of temporal precision used in Wikidata
The first 3 of these may be useful in generating content in languages that use those groupings of gender concepts, as categorized in this [[:en:List of languages by type of grammatical genders|Wikipedia list article]]. The other 2 are used in connection with the [[Z6064|Wikidata time]] Type mentioned above.
There is an [[Z6894|equality Function]] that can be used with instances of any lightweight enum Type. At least two other built-in auxiliary Functions are planned to increase the utility of lightweight enum Types, and should be available in the next week or two:
* a Function that extracts the Wikidata reference from an instance of a lightweight enum Type ([[:phab:T397490|T397490]])
* a Function that reports the possible values of a lightweight enum Type ([[:phab:T397494|T397494]]).
Note that lightweight enumeration Types are different from ordinary enumeration Types, which were introduced in the [[Wikifunctions:Status updates/2024-05-10|Status update 2024-05-10]]. With an ordinary enumeration Type, each possible value is a persisted ZObject with its own ZID, whereas the possible values of lightweight enumeration Types are references to Wikidata entities (which do not have a local instantiation in Wikifunctions).
=== Fresh Functions weekly: 72 new Functions ===
This week we had 72 new Functions. Wohoo!. Here is a list of functions with implementations and passing tests to get a taste of what Functions have been created. Thanks everybody for contributing!
* {{Z|Z25060}}
* {{Z|Z25073}}
* {{Z|Z25082}}
* {{Z|Z25085}}
* {{Z|Z25088}}
* {{Z|Z25091}}
* {{Z|Z25094}}
* {{Z|Z25098}}
* {{Z|Z25102}}
* {{Z|Z25108}}
* {{Z|Z25113}}
* {{Z|Z25152}}
* {{Z|Z25167}}
* {{Z|Z25179}}
* {{Z|Z25187}}
* {{Z|Z25191}}
* {{Z|Z25196}}
* {{Z|Z25200}}
* {{Z|Z25207}}
* {{Z|Z25217}}
* {{Z|Z25219}}
* {{Z|Z25220}}
* {{Z|Z25224}}
* {{Z|Z25227}}
* {{Z|Z25230}}
* {{Z|Z25232}}
* {{Z|Z25248}}
* {{Z|Z25262}}
* {{Z|Z25266}}
* {{Z|Z25271}}
* {{Z|Z25276}}
* {{Z|Z25280}}
* {{Z|Z25286}}
* {{Z|Z25294}}
* {{Z|Z25297}}
* {{Z|Z25300}}
* {{Z|Z25303}}
* {{Z|Z25306}}
* {{Z|Z25310}}
* {{Z|Z25315}}
* {{Z|Z25318}}
* {{Z|Z25341}}
A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all Functions sorted by when they were created] is available.
0dqqlqnfxtryv6h7661bkn7qboy1udm
195643
195642
2025-06-21T16:27:35Z
DVrandecic (WMF)
7
195643
wikitext
text/x-wiki
=== Recent Changes in the software ===
This week is a quieter one, with us landing some clean-up of recent features and capabilities.
On top of the back-end service caching system that we introduced last week ([[:phab:T390549|T390549]]), this week we will be enabling a new batching algorithm that should cause us to make fewer, more consolidated requests for Objects when we need to fetch them from the wiki ([[:phab:T390550|T390550]]). We also extended one of our maintenance scripts to be able to submit all of a Type of Object to this cache, which should allow us to ensure high cache performance even if the cache has to be re-built.
We also made a fair amount of progress towards a proof-of-concept of letting embedded Wikifunctions calls return rich text rather than plain text, and landed the front-end component for viewing and editing these ([[:phab:T391985|T391985]]). More to come soon!
We replaced the custom 'chip' components we were using for aliases to instead use the now-available Codex official version ([[:phab:T392702|T392702]]). We simplified some of our code around how we communicate between the Wikifunctions.org wiki software and the back-end services. We modernised the format returned by the API calls our front-end Vue code is using to talk to the wiki, to ensure consistency and avoid developer confusion.
We, along with all Wikimedia-deployed code, are now using the latest version of the Codex UX library, v2.1.0, as of this week. We believe that there should be no user-visible changes on Wikifunctions, so please comment on the Project chat or file a Phabricator task if you spot an issue.
=== News in Types ===
==== A few new built-in Types ====
In order to support Wikidata data better, we have introduced a few built-in Types: [[Z6064|Wikidata time]], [[Z6010|Wikidata quantity]], and [[Z6011|Wikidata geo-coordinates]]. This week we deployed code that instantiates these new Types. Values of these 3 Types appear in statements inside of larger ZObjects containing Wikidata content, such as [[Z6001|Wikidata item]] and [[Z6005|Wikidata lexeme]]. These values are instantiated when one of the Wikidata fetch Functions is called, such as [[Z6821|Fetch Wikidata item]] and [[Z6825|Fetch Wikidata lexeme]].
However, there are still some loose ends to be tidied up with respect to these three new Types:
* Each of them relies on existing Types such as [[Z13518|Natural number]], [[Z19677|Rational number]], and [[Z20342|Day of Roman year]]. We are noticing that the UI intermittently shows error messages from the display Functions for these Types. We believe this may be related to the current slowness in displaying large Wikidata entities. There is work underway that will yield a major improvement in this area. Until that work gets deployed, it is possible to bypass an error message and see the values by clicking on the relevant chevron (>) to open up the detailed view.
* As noted on the [[Wikifunctions:Project chat#Indicating unknown day/month values in Day of Roman Year|Project chat page]], Functions related to [[Z20342|Day of Roman year]] may still need to be updated to handle a couple new conventions that we’ve adopted for unknown month and unknown year.
Please be mindful of these loose ends when writing implementations for the new Types, but as you can see in the next section, a lot of Functions have already been written for them. A few discussions about converters have already started. Thanks everyone!
==== Lightweight enum Types ====
The new "lightweight enum Type" capability, previously mentioned in the [[Wikifunctions:Status#What are we working on this Quarter? (April–June 2025)|Status page]], is now available.
A lightweight enumeration Type is a collection of Wikidata entity references, which are the possible values of the Type. Each instance of the Type is a small wrapper around one of the possible values. There are currently 5 initial examples of lightweight enum Types:
* [[Z25340|Grammatical gender (m/f)]], for masculine and feminine genders
* [[Z25501|Grammatical gender (m/f/n)]], for masculine / feminine / neuter genders
* [[Z25502|Grammatical gender (c/n)]], for common and neuter genders
* [[Z6063|Wikidata calendar model]], currently referencing Gregorian and Julian calendars
* [[Z6062|Wikidata time precision]], listing 15 levels of temporal precision used in Wikidata
The first 3 of these may be useful in generating content in languages that use those groupings of gender concepts, as categorized in this [[:en:List of languages by type of grammatical genders|Wikipedia list article]]. The other 2 are used in connection with the [[Z6064|Wikidata time]] Type mentioned above.
There is an [[Z6894|equality Function]] that can be used with instances of any lightweight enum Type. At least two other built-in auxiliary Functions are planned to increase the utility of lightweight enum Types, and should be available in the next week or two:
* a Function that extracts the Wikidata reference from an instance of a lightweight enum Type ([[:phab:T397490|T397490]])
* a Function that reports the possible values of a lightweight enum Type ([[:phab:T397494|T397494]]).
Note that lightweight enumeration Types are different from ordinary enumeration Types, which were introduced in the [[Wikifunctions:Status updates/2024-05-10|Status update 2024-05-10]]. With an ordinary enumeration Type, each possible value is a persisted ZObject with its own ZID, whereas the possible values of lightweight enumeration Types are references to Wikidata entities (which do not have a local instantiation in Wikifunctions).
=== Fresh Functions weekly: 72 new Functions ===
This week we had 72 new Functions. Wohoo!. Here is a list of functions with implementations and passing tests to get a taste of what Functions have been created. Thanks everybody for contributing!
* {{Z|Z25060}}
* {{Z|Z25073}}
* {{Z|Z25082}}
* {{Z|Z25085}}
* {{Z|Z25088}}
* {{Z|Z25091}}
* {{Z|Z25094}}
* {{Z|Z25098}}
* {{Z|Z25102}}
* {{Z|Z25108}}
* {{Z|Z25113}}
* {{Z|Z25152}}
* {{Z|Z25167}}
* {{Z|Z25179}}
* {{Z|Z25187}}
* {{Z|Z25191}}
* {{Z|Z25196}}
* {{Z|Z25200}}
* {{Z|Z25207}}
* {{Z|Z25217}}
* {{Z|Z25219}}
* {{Z|Z25220}}
* {{Z|Z25224}}
* {{Z|Z25227}}
* {{Z|Z25230}}
* {{Z|Z25232}}
* {{Z|Z25248}}
* {{Z|Z25262}}
* {{Z|Z25266}}
* {{Z|Z25271}}
* {{Z|Z25276}}
* {{Z|Z25280}}
* {{Z|Z25286}}
* {{Z|Z25294}}
* {{Z|Z25297}}
* {{Z|Z25300}}
* {{Z|Z25303}}
* {{Z|Z25306}}
* {{Z|Z25310}}
* {{Z|Z25315}}
* {{Z|Z25318}}
* {{Z|Z25341}}
A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all Functions sorted by when they were created] is available.
sbua0jbrryl424hxg6sb5umi5xvnor9
195644
195643
2025-06-21T16:32:10Z
DVrandecic (WMF)
7
195644
wikitext
text/x-wiki
=== Quarterly Planning for July–September 2025 ===
Each Quarter, we are publishing here our plan for the upcoming three months to make our work more transparent. We previously [[Wikifunctions:Status updates/2025-04-05|set out our plan for the "Q4" Quarter]], April–June 2025, at the start, and we'll report on how that went soon.
The Foundation's annual cycle runs from July to June the next calendar year. [[:meta:Wikimedia Foundation Annual Plan/2025-2026|This year's annual plan]] includes the [[:meta:Wikimedia Foundation Annual Plan/2025-2026/Product & Technology OKRs#Vital Knowledge (WE2)|central "Objective" around which our team's work is centred, Wiki Experiences (WE) 2]], "Vital Knowledge":
: ''Make more vital knowledge available and well illustrated across languages and topics.''
In general, the Abstract Wikipedia team has [[:mw:Abstract Wikipedia team#Roadmap|three strategic goals for our roadmap]] — Technical Foundation, Build Community, and Prepare for Scale. Our focus this year is mainly on the Technical Foundation side, building out the features for Wikifunctions so that it can demonstrate the Abstract Wikipedia vision of generating language-independent articles in any language based on Wikidata content. We have expressed this in the annual plan as Key Result WE2.2, to "build the platform capabilities needed to validate that we can support the Abstract Wikipedia vision at scale".
We have several strands of work, which we're organising below under our three areas, set out below.
==== Technical Foundation ====
For the Abstract Wikipedia vision to be exciting, interesting, and meaningful, we need to demonstrate through real, working systems the abilities so that the on-wiki communities can make credible, high-value vital knowledge in multiple languages.
This Quarter, we have a number of pieces of feature and technical work that we think will help our on-wiki communities build credible Functions:
* '''Rich text/HTML''': If we enable Wikifunctions to output HTML tables, styling, and links, we will demonstrate through a Function that displays a conjugation table its capability for generating net new knowledge on Wiktionaries beyond simple conversions.
* '''Usability fixes based on Dagbani community testing'''. If we address usability findings from the Dagbani community, editors will encounter fewer or zero critical usability issues during testing and we will see an increase in use of embedded Wikifunctions in wikis.
* '''Provide a Wikidata lexeme sense component'''. If we provide a Wikidata lexeme sense component into the Wikifunctions UI, then contributors will be able to identify and select relevant lexemes without leaving the platform/Wikifunctions—reducing context switching and enabling faster and more successful creation of language-related Functions.
* '''Wikidata in embedded Function calls''': If we add support for Wikidata entities in embedded Function calls, we will enable over 200 new Functions that can generate comprehensive sentences using Wikidata entities, making Functions more easily used on Wikimedia projects.
* '''More complete access to Wikidata content''': If we provide import of Wikidata statements with qualifiers, it will be possible to generate multifaceted facts (facts requiring more than just subject/predicate/value to express), which includes an estimated 50% of encyclopedic content in Wikidata.
* '''More performant access to Wikidata content''': If we provide caching of retrieved Wikidata entities, we will reduce by at least 50% the average runtime of Wikidata content-based Functions, reducing timeouts and user frustration.
* '''Increase stability when running Function calls''': If we make our backend-internal request format more expressive and concise, we can increase the system's stability, thereby supporting a broader rollout.
* [Product Spike] '''Explore citations support''': If we define and socialize across Product & Technology teams on the product needs for citations that are required for Abstract Content, we will be able to drive cross-Wikimedia work to deliver provenance information attached to Abstract Content, which is crucial for successful take-up across wikis.
==== Build Community ====
For the Abstract Wikipedia vision to be a success, we need to plan for how communities will use, control, and collaborate around the Abstract Content, so that any vital knowledge it ''can'' create is actually meaningfully available in multiple languages.
This Quarter, we plan to continue the conversation around how Abstract Content will work, demonstrating content that shows how it works, so that we have answers for how on-wiki communities will use it:
* [Product Spike] '''Scope of abstract location work''': If we build out an architecture plan for where Abstract Content will reside and how it will interact with Wikipedia, we will be more ready to implement the Abstract Wikipedia platform to increase provision of high-quality encyclopedic content.
* '''Demonstrated NLG Abstract Content''': If we provide prototype fragments using Wikidata and Wikifunctions calls to generate natural language snippets, we will show readiness for the project, and will be ready for it to be used to train AI so humans don't have to think too much about functions.
==== Prepare for Scale ====
For the Abstract Wikipedia vision to be usable and scalable to serve many topics in many languages, we need to make sure that it is fast for users as they read and edit, rapid to update when underlying data sources change, and low-cost for the servers so that it is scalable.
This Quarter, we plan to continue the roll-out of the existing embedded feature to new on-wiki communities, so that we can learn from them how well the tools work, what new issues different languages and communities find, and where we can add or expand features to better suit different forms of knowledge and community:
* '''Rollout''': If we follow Parsoid’s rollout and integrate Wikifunctions on most Wiktionaries and some low-traffic Wikipedias, we will get the testing we need to confidently roll out to larger wikis.
Alongside the items above, we also plan some essential work, first to do better capacity planning for the back-end services, and second to continue our Rust re-platforming of the back-end security-sensitive code-running evaluator service.
=== Recent Changes in the software ===
This week is a quieter one, with us landing some clean-up of recent features and capabilities.
On top of the back-end service caching system that we introduced last week ([[:phab:T390549|T390549]]), this week we will be enabling a new batching algorithm that should cause us to make fewer, more consolidated requests for Objects when we need to fetch them from the wiki ([[:phab:T390550|T390550]]). We also extended one of our maintenance scripts to be able to submit all of a Type of Object to this cache, which should allow us to ensure high cache performance even if the cache has to be re-built.
We also made a fair amount of progress towards a proof-of-concept of letting embedded Wikifunctions calls return rich text rather than plain text, and landed the front-end component for viewing and editing these ([[:phab:T391985|T391985]]). More to come soon!
We replaced the custom 'chip' components we were using for aliases to instead use the now-available Codex official version ([[:phab:T392702|T392702]]). We simplified some of our code around how we communicate between the Wikifunctions.org wiki software and the back-end services. We modernised the format returned by the API calls our front-end Vue code is using to talk to the wiki, to ensure consistency and avoid developer confusion.
We, along with all Wikimedia-deployed code, are now using the latest version of the Codex UX library, v2.1.0, as of this week. We believe that there should be no user-visible changes on Wikifunctions, so please comment on the Project chat or file a Phabricator task if you spot an issue.
=== News in Types ===
==== A few new built-in Types ====
In order to support Wikidata data better, we have introduced a few built-in Types: [[Z6064|Wikidata time]], [[Z6010|Wikidata quantity]], and [[Z6011|Wikidata geo-coordinates]]. This week we deployed code that instantiates these new Types. Values of these 3 Types appear in statements inside of larger ZObjects containing Wikidata content, such as [[Z6001|Wikidata item]] and [[Z6005|Wikidata lexeme]]. These values are instantiated when one of the Wikidata fetch Functions is called, such as [[Z6821|Fetch Wikidata item]] and [[Z6825|Fetch Wikidata lexeme]].
However, there are still some loose ends to be tidied up with respect to these three new Types:
* Each of them relies on existing Types such as [[Z13518|Natural number]], [[Z19677|Rational number]], and [[Z20342|Day of Roman year]]. We are noticing that the UI intermittently shows error messages from the display Functions for these Types. We believe this may be related to the current slowness in displaying large Wikidata entities. There is work underway that will yield a major improvement in this area. Until that work gets deployed, it is possible to bypass an error message and see the values by clicking on the relevant chevron (>) to open up the detailed view.
* As noted on the [[Wikifunctions:Project chat#Indicating unknown day/month values in Day of Roman Year|Project chat page]], Functions related to [[Z20342|Day of Roman year]] may still need to be updated to handle a couple new conventions that we’ve adopted for unknown month and unknown year.
Please be mindful of these loose ends when writing implementations for the new Types, but as you can see in the next section, a lot of Functions have already been written for them. A few discussions about converters have already started. Thanks everyone!
==== Lightweight enum Types ====
The new "lightweight enum Type" capability, previously mentioned in the [[Wikifunctions:Status#What are we working on this Quarter? (April–June 2025)|Status page]], is now available.
A lightweight enumeration Type is a collection of Wikidata entity references, which are the possible values of the Type. Each instance of the Type is a small wrapper around one of the possible values. There are currently 5 initial examples of lightweight enum Types:
* [[Z25340|Grammatical gender (m/f)]], for masculine and feminine genders
* [[Z25501|Grammatical gender (m/f/n)]], for masculine / feminine / neuter genders
* [[Z25502|Grammatical gender (c/n)]], for common and neuter genders
* [[Z6063|Wikidata calendar model]], currently referencing Gregorian and Julian calendars
* [[Z6062|Wikidata time precision]], listing 15 levels of temporal precision used in Wikidata
The first 3 of these may be useful in generating content in languages that use those groupings of gender concepts, as categorized in this [[:en:List of languages by type of grammatical genders|Wikipedia list article]]. The other 2 are used in connection with the [[Z6064|Wikidata time]] Type mentioned above.
There is an [[Z6894|equality Function]] that can be used with instances of any lightweight enum Type. At least two other built-in auxiliary Functions are planned to increase the utility of lightweight enum Types, and should be available in the next week or two:
* a Function that extracts the Wikidata reference from an instance of a lightweight enum Type ([[:phab:T397490|T397490]])
* a Function that reports the possible values of a lightweight enum Type ([[:phab:T397494|T397494]]).
Note that lightweight enumeration Types are different from ordinary enumeration Types, which were introduced in the [[Wikifunctions:Status updates/2024-05-10|Status update 2024-05-10]]. With an ordinary enumeration Type, each possible value is a persisted ZObject with its own ZID, whereas the possible values of lightweight enumeration Types are references to Wikidata entities (which do not have a local instantiation in Wikifunctions).
=== Fresh Functions weekly: 72 new Functions ===
This week we had 72 new Functions. Wohoo!. Here is a list of functions with implementations and passing tests to get a taste of what Functions have been created. Thanks everybody for contributing!
* {{Z|Z25060}}
* {{Z|Z25073}}
* {{Z|Z25082}}
* {{Z|Z25085}}
* {{Z|Z25088}}
* {{Z|Z25091}}
* {{Z|Z25094}}
* {{Z|Z25098}}
* {{Z|Z25102}}
* {{Z|Z25108}}
* {{Z|Z25113}}
* {{Z|Z25152}}
* {{Z|Z25167}}
* {{Z|Z25179}}
* {{Z|Z25187}}
* {{Z|Z25191}}
* {{Z|Z25196}}
* {{Z|Z25200}}
* {{Z|Z25207}}
* {{Z|Z25217}}
* {{Z|Z25219}}
* {{Z|Z25220}}
* {{Z|Z25224}}
* {{Z|Z25227}}
* {{Z|Z25230}}
* {{Z|Z25232}}
* {{Z|Z25248}}
* {{Z|Z25262}}
* {{Z|Z25266}}
* {{Z|Z25271}}
* {{Z|Z25276}}
* {{Z|Z25280}}
* {{Z|Z25286}}
* {{Z|Z25294}}
* {{Z|Z25297}}
* {{Z|Z25300}}
* {{Z|Z25303}}
* {{Z|Z25306}}
* {{Z|Z25310}}
* {{Z|Z25315}}
* {{Z|Z25318}}
* {{Z|Z25341}}
A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all Functions sorted by when they were created] is available.
f6r0jil58mmfcyip7eeaq5fvndteazv
Wikifunctions:Catalogue/Proposal
4
59264
195646
2025-06-21T17:38:33Z
Denny
81
Created page with "This is a catalogue of the functions in Wikifunctions. They are grouped in the following six major categories. {| class="wikitable" |+ |[[Wikifunctions:Catalogue/Text & Language|Text & Language]] |[[Wikifunctions:Catalogue/Arts & Humanities|Arts & Humanities]] |[[Wikifunctions:Catalogue/Science & Engineering|Science & Engineering]] |- |[[Wikifunctions:Catalogue/Mathematics & Logic|Mathematics & Logic]] |[[Wikifunctions:Catalogue/Time & Space|Time & Space]] |Wikifuncti..."
195646
wikitext
text/x-wiki
This is a catalogue of the functions in Wikifunctions. They are grouped in the following six major categories.
{| class="wikitable"
|+
|[[Wikifunctions:Catalogue/Text & Language|Text & Language]]
|[[Wikifunctions:Catalogue/Arts & Humanities|Arts & Humanities]]
|[[Wikifunctions:Catalogue/Science & Engineering|Science & Engineering]]
|-
|[[Wikifunctions:Catalogue/Mathematics & Logic|Mathematics & Logic]]
|[[Wikifunctions:Catalogue/Time & Space|Time & Space]]
|[[Wikifunctions:Catalogue/Programming & Wikimedia|Programming & Wikimedia]]
|}
There is also a [[Special:ListObjectsByType/Z8|complete list of functions]] and a [[Wikifunctions:Suggest a function|list of suggested functions]].
4o5nss4u3psrkx6eaaslld2hig1u8nj
195787
195646
2025-06-22T08:08:24Z
Denny
81
195787
wikitext
text/x-wiki
This is a catalogue of the functions in Wikifunctions. They are grouped in the following six major categories. A description of the categories is below.
{| class="wikitable"
|+
|[[Wikifunctions:Catalogue/Text & Language|Text & Language]]
|[[Wikifunctions:Catalogue/Arts & Humanities|Arts & Humanities]]
|[[Wikifunctions:Catalogue/Science & Engineering|Science & Engineering]]
|-
|[[Wikifunctions:Catalogue/Mathematics & Logic|Mathematics & Logic]]
|[[Wikifunctions:Catalogue/Time & Space|Time & Space]]
|[[Wikifunctions:Catalogue/Programming & Wikimedia|Programming & Wikimedia]]
|}
There is also a [[Special:ListObjectsByType/Z8|complete list of functions]] and a [[Wikifunctions:Suggest a function|list of suggested functions]].
There are also the following lists of functions:
* [[Wikifunctions:Excel functions|Excel functions]]
* [[Wikifunctions:Functions GREL|Functions GREL]]
== Overview of the categories ==
* '''[[Wikifunctions:Catalogue/Text & Language|Text & Language]]''' include functions that generate natural language text, but also functions that deal with characters, strings of characters, and languages per se.
* '''[[Wikifunctions:Catalogue/Arts & Humanities|Arts & Humanities]]''' include functions about music, color, economics, and other arts and humanities.
* '''[[Wikifunctions:Catalogue/Science & Engineering|Science & Engineering]]''' include functions about chemistry, biology, physics, electrical engineering, measurements, and other natural sciences and engineering fields.
* '''[[Wikifunctions:Catalogue/Mathematics & Logic|Mathematics & Logic]]''' include functions about numbers, arithmetics, logical operations, and related topics.
* '''[[Wikifunctions:Catalogue/Time & Space|Time & Space]]''' include functions about measuring time and space, particularly calendars, coordinates, areas, etc.
* '''[[Wikifunctions:Catalogue/Programming & Wikimedia|Programming & Wikimedia]]''' include functions about how to control the flow through a function, and about how to access Wikidata and other Wikimedia properties, particularly the Wikifunctions type system
81j361lfr3857jtfaww1qpfpm9czans
Translations:Wikifunctions:Programming languages/Page display title/pt-br
1198
59265
195648
2025-06-21T19:20:21Z
Eduardogobi
2982
Created page with "Wikifunctions:Linguagens de programação"
195648
wikitext
text/x-wiki
Wikifunctions:Linguagens de programação
n0zbxgqsbwn8uw2lx6ny3wj0fcyahdd
Wikifunctions:Programming languages/pt-br
4
59266
195649
2025-06-21T19:20:22Z
Eduardogobi
2982
Created page with "Wikifunctions:Linguagens de programação"
195649
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
<div lang="en" dir="ltr" class="mw-content-ltr">
See also {{ll|Wikifunctions:Human languages}} and [[w:en:Lists of programming languages|Lists of programming languages]] in Wikipedia. [[Special:MyLanguage/WF:glossary#composition|Compositions]] are a kind of language, but aren't covered here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Executable ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Implemented ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As of March 2024 the following languages compile to [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] to be run by the [[Special:MyLanguage/WF:glossary#executor|executor]]:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Javascript ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy W3C Software and Document Notice and License], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), using [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] (using [https://bellard.org/quickjs/ QuickJS 2024], compatible with ES2023)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Python ([https://docs.python.org/3/license.html PSF License Agreement], Zero-Clause BSD), using the development version of [https://github.com/RustPython/RustPython RustPython] WASI mode (this is intended to be compatible with CPython 3.12)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Planned ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
iikpzzuz8nf8iee4g92phtsuhdn5pti
195655
195649
2025-06-21T19:22:50Z
Eduardogobi
2982
Created page with "Veja também $1 e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[$2|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui."
195655
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<div lang="en" dir="ltr" class="mw-content-ltr">
== Executable ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Implemented ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As of March 2024 the following languages compile to [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] to be run by the [[Special:MyLanguage/WF:glossary#executor|executor]]:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Javascript ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy W3C Software and Document Notice and License], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), using [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] (using [https://bellard.org/quickjs/ QuickJS 2024], compatible with ES2023)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Python ([https://docs.python.org/3/license.html PSF License Agreement], Zero-Clause BSD), using the development version of [https://github.com/RustPython/RustPython RustPython] WASI mode (this is intended to be compatible with CPython 3.12)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Planned ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
4ku1d9h94i1w4inkz94ffg913sm7gh5
195657
195655
2025-06-21T19:23:22Z
Eduardogobi
2982
Created page with "== Executáveis =="
195657
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Implemented ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As of March 2024 the following languages compile to [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] to be run by the [[Special:MyLanguage/WF:glossary#executor|executor]]:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Javascript ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy W3C Software and Document Notice and License], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), using [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] (using [https://bellard.org/quickjs/ QuickJS 2024], compatible with ES2023)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Python ([https://docs.python.org/3/license.html PSF License Agreement], Zero-Clause BSD), using the development version of [https://github.com/RustPython/RustPython RustPython] WASI mode (this is intended to be compatible with CPython 3.12)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Planned ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
pjfhb790xg4t2eltwmc5u1mfrldgmwg
195659
195657
2025-06-21T19:23:28Z
Eduardogobi
2982
Created page with "=== Implementadas ==="
195659
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
<div lang="en" dir="ltr" class="mw-content-ltr">
As of March 2024 the following languages compile to [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] to be run by the [[Special:MyLanguage/WF:glossary#executor|executor]]:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Javascript ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy W3C Software and Document Notice and License], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), using [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] (using [https://bellard.org/quickjs/ QuickJS 2024], compatible with ES2023)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Python ([https://docs.python.org/3/license.html PSF License Agreement], Zero-Clause BSD), using the development version of [https://github.com/RustPython/RustPython RustPython] WASI mode (this is intended to be compatible with CPython 3.12)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Planned ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
rymgepu1arhw4ze2k2o64yejumizqh7
195661
195659
2025-06-21T19:24:27Z
Eduardogobi
2982
Created page with "Desde março de 2024, as seguintes linguagens são compiladas no [[$1|WASM]] para serem processadas pelo [[$2|executor]]:"
195661
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
Desde março de 2024, as seguintes linguagens são compiladas no [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] para serem processadas pelo [[Special:MyLanguage/WF:glossary#executor|executor]]:
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Javascript ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy W3C Software and Document Notice and License], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), using [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] (using [https://bellard.org/quickjs/ QuickJS 2024], compatible with ES2023)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Python ([https://docs.python.org/3/license.html PSF License Agreement], Zero-Clause BSD), using the development version of [https://github.com/RustPython/RustPython RustPython] WASI mode (this is intended to be compatible with CPython 3.12)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Planned ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
hnxwsvjnlw8arwrqsdrjkwkhtbwf435
195670
195661
2025-06-21T19:31:44Z
Eduardogobi
2982
Created page with "JavaScript não versionado ([$1 Aviso e Licença de ''Software'' e Documentação do W3C], [$2 src]), utilizando [$3 WasmEdge-QuickJS] ([$4 QuickJS 2024], compatível com o ES2023)"
195670
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
Desde março de 2024, as seguintes linguagens são compiladas no [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] para serem processadas pelo [[Special:MyLanguage/WF:glossary#executor|executor]]:
* JavaScript não versionado ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy Aviso e Licença de ''Software'' e Documentação do W3C], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), utilizando [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] ([https://bellard.org/quickjs/ QuickJS 2024], compatível com o ES2023)
* <span lang="en" dir="ltr" class="mw-content-ltr">unversioned Python ([https://docs.python.org/3/license.html PSF License Agreement], Zero-Clause BSD), using the development version of [https://github.com/RustPython/RustPython RustPython] WASI mode (this is intended to be compatible with CPython 3.12)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Planned ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
4jlvwm3iup1fe6erdztm8kru67bzhwo
195673
195670
2025-06-21T19:33:21Z
Eduardogobi
2982
Created page with "Python não versionado ([$1 Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [$2 RustPython] no modo WASI (para ser compatível com o CPython 3.12)"
195673
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
Desde março de 2024, as seguintes linguagens são compiladas no [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] para serem processadas pelo [[Special:MyLanguage/WF:glossary#executor|executor]]:
* JavaScript não versionado ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy Aviso e Licença de ''Software'' e Documentação do W3C], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), utilizando [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] ([https://bellard.org/quickjs/ QuickJS 2024], compatível com o ES2023)
* Python não versionado ([https://docs.python.org/3/license.html Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [https://github.com/RustPython/RustPython RustPython] no modo WASI (para ser compatível com o CPython 3.12)
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Planned ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
os3uh9neg0g210dzunoiingplq3msj9
195675
195673
2025-06-21T19:33:56Z
Eduardogobi
2982
Created page with "=== Planejadas ==="
195675
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
Desde março de 2024, as seguintes linguagens são compiladas no [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] para serem processadas pelo [[Special:MyLanguage/WF:glossary#executor|executor]]:
* JavaScript não versionado ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy Aviso e Licença de ''Software'' e Documentação do W3C], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), utilizando [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] ([https://bellard.org/quickjs/ QuickJS 2024], compatível com o ES2023)
* Python não versionado ([https://docs.python.org/3/license.html Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [https://github.com/RustPython/RustPython RustPython] no modo WASI (para ser compatível com o CPython 3.12)
<span id="Planned"></span>
=== Planejadas ===
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Javascript (ECMA202?+)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
bwy258f1v2zym8gdn0qvzez1jxyyajc
195677
195675
2025-06-21T19:34:13Z
Eduardogobi
2982
Created page with "JavaScript versionado (ECMA202?+)"
195677
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
Desde março de 2024, as seguintes linguagens são compiladas no [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] para serem processadas pelo [[Special:MyLanguage/WF:glossary#executor|executor]]:
* JavaScript não versionado ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy Aviso e Licença de ''Software'' e Documentação do W3C], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), utilizando [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] ([https://bellard.org/quickjs/ QuickJS 2024], compatível com o ES2023)
* Python não versionado ([https://docs.python.org/3/license.html Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [https://github.com/RustPython/RustPython RustPython] no modo WASI (para ser compatível com o CPython 3.12)
<span id="Planned"></span>
=== Planejadas ===
* JavaScript versionado (ECMA202?+)
* <span lang="en" dir="ltr" class="mw-content-ltr">versioned Python (3+)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
bqlyulv2vziqxbj7riurpw4vfh2ebne
195679
195677
2025-06-21T19:34:44Z
Eduardogobi
2982
Created page with "Python versionado (3+)"
195679
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
Desde março de 2024, as seguintes linguagens são compiladas no [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] para serem processadas pelo [[Special:MyLanguage/WF:glossary#executor|executor]]:
* JavaScript não versionado ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy Aviso e Licença de ''Software'' e Documentação do W3C], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), utilizando [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] ([https://bellard.org/quickjs/ QuickJS 2024], compatível com o ES2023)
* Python não versionado ([https://docs.python.org/3/license.html Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [https://github.com/RustPython/RustPython RustPython] no modo WASI (para ser compatível com o CPython 3.12)
<span id="Planned"></span>
=== Planejadas ===
* JavaScript versionado (ECMA202?+)
* Python versionado (3+)
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Requested ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
tab9ascevlhxqfqbrtqws58e6sla59i
195681
195679
2025-06-21T19:34:57Z
Eduardogobi
2982
Created page with "=== Pedidas ==="
195681
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:PROG]]}}<!--{{distinguish|WF:HL}}-->
Veja também {{ll|Wikifunctions:Human languages}} e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[Special:MyLanguage/WF:glossary#composition|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
<span id="Executable"></span>
== Executáveis ==
<span id="Implemented"></span>
=== Implementadas ===
Desde março de 2024, as seguintes linguagens são compiladas no [[meta:Special:MyLanguage/Abstract Wikipedia/Updates/2023-10-25|WASM]] para serem processadas pelo [[Special:MyLanguage/WF:glossary#executor|executor]]:
* JavaScript não versionado ([https://ecma-international.org/policies/by-ipr/ecma-text-copyright-policy Aviso e Licença de ''Software'' e Documentação do W3C], [https://hacks.mozilla.org/2022/06/the-specification-for-javascript-has-a-new-license src]), utilizando [https://github.com/second-state/wasmedge-quickjs WasmEdge-QuickJS] ([https://bellard.org/quickjs/ QuickJS 2024], compatível com o ES2023)
* Python não versionado ([https://docs.python.org/3/license.html Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [https://github.com/RustPython/RustPython RustPython] no modo WASI (para ser compatível com o CPython 3.12)
<span id="Planned"></span>
=== Planejadas ===
* JavaScript versionado (ECMA202?+)
* Python versionado (3+)
<span id="Requested"></span>
=== Pedidas ===
<div lang="en" dir="ltr" class="mw-content-ltr">
See the [[phab:tag/wikifunctions-new-language-requests|workboard in Phabricator]] to request additional programming languages that should be supported in Wikifunctions. Among other criteria for implementation, available language interpreter/compiler software must be freely licensed.
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352589|T352589]]: LabView/G<!--[https://ni.com/en/support/downloads/activate.html proprietary]--> via pyLabView ([https://github.com/mefistotelis/pylabview/blob/master/LICENSE MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T352588|T352588]]: Kotlin ([https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE Apache])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T307171|T307171]]: Lua ([https://lua.org/license.html MIT])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T301418|T301418]]: Scratch/Snap!/Logolike ([https://github.com/scratchfoundation/scratch-gui/blob/develop/LICENSE BSD 3-Clause], GPLv2 and Scratch Source Code License)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[phab:T298633|T298633]]: Vlojure ([https://github.com/Ella-Hoeppner/Vlojure/blob/main/LICENSE MIT])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Former ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Previously, the function evaluator directly ran code in its container. Because it was based on Debian Bullseye, JavaScript execution was provided by Node.js 16 and Python by Python 3.9. These are no longer immediately available due to the re-build onto Web Assembler, but could return if needed via a custom build.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Functions for manipulating ==
</div>
* {{ll|WF:Mathematica}}
[[Category:Project{{#translation:}}]]
kicu3l7plddatvta897ixq45lffqfo7
Category:Project/pt-br
14
59267
195650
2025-06-21T19:20:23Z
FuzzyBot
207
Automatically creating translation of category used on [[Wikifunctions:Programming languages/pt-br]]
195650
wikitext
text/x-wiki
<languages/>
<span lang="en" dir="ltr" class="mw-content-ltr">This category is for pages about the Wikifunctions and Abstract Wikipedia projects.</span>
[[Category:Contents{{#translation:}}]]
4q0t4mpyyuygxk1zpxzc76e22w97l0w
195653
195650
2025-06-21T19:21:09Z
Eduardogobi
2982
Created page with "Esta categoria serve para páginas sobre os projetos Wikifunctions e Wikipédia Abstrata."
195653
wikitext
text/x-wiki
<languages/>
Esta categoria serve para páginas sobre os projetos Wikifunctions e Wikipédia Abstrata.
[[Category:Contents{{#translation:}}]]
c4u3qk9b4c9ggttxu65muhad0z2q3hh
Translations:Category:Project/Page display title/pt-br
1198
59268
195651
2025-06-21T19:20:45Z
Eduardogobi
2982
Created page with "Categoria:Projeto"
195651
wikitext
text/x-wiki
Categoria:Projeto
sdln82cuijov86fq5tnnxt8qu2z14zt
Translations:Category:Project/1/pt-br
1198
59269
195652
2025-06-21T19:21:08Z
Eduardogobi
2982
Created page with "Esta categoria serve para páginas sobre os projetos Wikifunctions e Wikipédia Abstrata."
195652
wikitext
text/x-wiki
Esta categoria serve para páginas sobre os projetos Wikifunctions e Wikipédia Abstrata.
l9ty2tw496s436bwyp09echzx16p81h
Translations:Wikifunctions:Programming languages/1/pt-br
1198
59270
195654
2025-06-21T19:22:49Z
Eduardogobi
2982
Created page with "Veja também $1 e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[$2|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui."
195654
wikitext
text/x-wiki
Veja também $1 e [[w:Lists of programming languages|Lists of programming languages]] na Wikipédia em inglês. [[$2|Composições]], embora sejam um tipo de linguagem, não serão abordadas aqui.
nom2gv30efme9upy572tgk51eak072f
Translations:Wikifunctions:Programming languages/2/pt-br
1198
59271
195656
2025-06-21T19:23:22Z
Eduardogobi
2982
Created page with "== Executáveis =="
195656
wikitext
text/x-wiki
== Executáveis ==
b7z4ae22p604oypazq75dft6aniwl8a
Translations:Wikifunctions:Programming languages/3/pt-br
1198
59272
195658
2025-06-21T19:23:27Z
Eduardogobi
2982
Created page with "=== Implementadas ==="
195658
wikitext
text/x-wiki
=== Implementadas ===
c5xzyxjmn5dscsqwpii3cegwzwfg9yy
Translations:Wikifunctions:Programming languages/4/pt-br
1198
59273
195660
2025-06-21T19:24:26Z
Eduardogobi
2982
Created page with "Desde março de 2024, as seguintes linguagens são compiladas no [[$1|WASM]] para serem processadas pelo [[$2|executor]]:"
195660
wikitext
text/x-wiki
Desde março de 2024, as seguintes linguagens são compiladas no [[$1|WASM]] para serem processadas pelo [[$2|executor]]:
thrjr5x4ktelok9okkb0zlzbhg3eflz
Z25540
0
59274
195662
2025-06-21T19:25:43Z
SRG372
12739
195662
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25540"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z80",
"Z17K2": "Z25540K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "byte"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25540"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
r16w79q8b18zyay4rbp8jbn23h1kv2j
Z25541
0
59275
195663
2025-06-21T19:26:47Z
SRG372
12739
195663
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25541"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25540",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25540",
"Z25540K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "0"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set in 0x00"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0vffbua5fm5edhzziseo9tg5a63qt7z
Z25542
0
59276
195664
2025-06-21T19:28:04Z
SRG372
12739
195664
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25542"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25540",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25540",
"Z25540K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "127"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set in 0x7F"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
48gmwcdzkesg2ejih5y44w5aovy3b66
Z25543
0
59277
195665
2025-06-21T19:29:06Z
SRG372
12739
195665
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25543"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25540",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25540",
"Z25540K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "128"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set in 0x80"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
dqq4disou38fjpbuo4rq9mcrgj868lt
Z25544
0
59278
195666
2025-06-21T19:29:46Z
SRG372
12739
195666
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25544"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25540",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25540",
"Z25540K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "255"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set in 0xFF"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
senoryxx4mzt0njfyiwmhlvp1onf71c
Z25545
0
59279
195667
2025-06-21T19:30:37Z
SRG372
12739
195667
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25545"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25540",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z25426",
"Z25426K1": {
"Z1K1": "Z18",
"Z18K1": "Z25540K1"
},
"Z25426K2": {
"Z1K1": "Z13518",
"Z13518K1": "7"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "highest bit set, composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
an2vsjb5i2epii458wmrtqpp0kctu79
195668
195667
2025-06-21T19:31:26Z
SRG372
12739
195668
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25545"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25540",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z25426",
"Z25426K1": {
"Z1K1": "Z18",
"Z18K1": "Z25540K1"
},
"Z25426K2": {
"Z1K1": "Z13518",
"Z13518K1": "7"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set, composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
tuqhs4r5dv6a3qu7cb41qudhr0711d3
Translations:Wikifunctions:Programming languages/5/pt-br
1198
59280
195669
2025-06-21T19:31:44Z
Eduardogobi
2982
Created page with "JavaScript não versionado ([$1 Aviso e Licença de ''Software'' e Documentação do W3C], [$2 src]), utilizando [$3 WasmEdge-QuickJS] ([$4 QuickJS 2024], compatível com o ES2023)"
195669
wikitext
text/x-wiki
JavaScript não versionado ([$1 Aviso e Licença de ''Software'' e Documentação do W3C], [$2 src]), utilizando [$3 WasmEdge-QuickJS] ([$4 QuickJS 2024], compatível com o ES2023)
jnzw2o8rf2hmcsz6cwwghrsr5xvfoz0
Z25546
0
59281
195671
2025-06-21T19:32:26Z
SRG372
12739
195671
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25546"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25540",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25540(Z25540K1):\n\treturn (Z25540K1 \u0026 128) != 0"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
2bq90511174qyip8micvfq7p4hkfu8n
Translations:Wikifunctions:Programming languages/6/pt-br
1198
59282
195672
2025-06-21T19:33:20Z
Eduardogobi
2982
Created page with "Python não versionado ([$1 Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [$2 RustPython] no modo WASI (para ser compatível com o CPython 3.12)"
195672
wikitext
text/x-wiki
Python não versionado ([$1 Acordo de Licença da PSF], BSD Zero-Clause), utilizando a versão de desenvolvimento do [$2 RustPython] no modo WASI (para ser compatível com o CPython 3.12)
e6nye4lodlogmnj406cby5t1lp98t8j
Translations:Wikifunctions:Programming languages/7/pt-br
1198
59283
195674
2025-06-21T19:33:55Z
Eduardogobi
2982
Created page with "=== Planejadas ==="
195674
wikitext
text/x-wiki
=== Planejadas ===
3x5y20jkwzye5bsrsdcn4cywg50g345
Translations:Wikifunctions:Programming languages/8/pt-br
1198
59284
195676
2025-06-21T19:34:12Z
Eduardogobi
2982
Created page with "JavaScript versionado (ECMA202?+)"
195676
wikitext
text/x-wiki
JavaScript versionado (ECMA202?+)
l409jubcqjpfvyhqsz9rwa67jxx8u0y
Translations:Wikifunctions:Programming languages/9/pt-br
1198
59285
195678
2025-06-21T19:34:43Z
Eduardogobi
2982
Created page with "Python versionado (3+)"
195678
wikitext
text/x-wiki
Python versionado (3+)
1op8dry0w77ae01ormk8tk6wopovj4v
Translations:Wikifunctions:Programming languages/10/pt-br
1198
59286
195680
2025-06-21T19:34:56Z
Eduardogobi
2982
Created page with "=== Pedidas ==="
195680
wikitext
text/x-wiki
=== Pedidas ===
it596j9p1jlpd1z2yes9hwwograj8y6
Z25547
0
59287
195683
2025-06-21T19:38:50Z
SRG372
12739
195683
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25547"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25540",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z25540( Z25540K1 ) {\n\treturn (Z25540K1 \u0026 128) != 0;\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is highest bit set, js"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ffdezmtkaqwfkn0yibwjxsyylo5xr88
Z25548
0
59288
195684
2025-06-21T19:40:04Z
SRG372
12739
195684
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25548"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z80",
"Z17K2": "Z25548K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "byte"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25548"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
myaud735gpht6giuie4iw7chhgn644k
Z25549
0
59289
195685
2025-06-21T19:40:42Z
SRG372
12739
195685
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25549"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25548",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25548",
"Z25548K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "0"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set in 0x00"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pixbwo0epp6hkbgo810t7dnywr0vy37
Z25550
0
59290
195686
2025-06-21T19:41:14Z
SRG372
12739
195686
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25550"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25548",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25548",
"Z25548K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set in 0x01"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
kj8l6uebksw2p3t31uf56aj5a0ygn82
Z25551
0
59291
195687
2025-06-21T19:42:03Z
SRG372
12739
195687
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25551"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25548",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25548",
"Z25548K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "254"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set in 0xFE"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
br3t5ijbgwt129uk3mk9xca3v7yep5h
Z25552
0
59292
195688
2025-06-21T19:45:13Z
SRG372
12739
195688
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25552"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25548",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25548",
"Z25548K1": {
"Z1K1": "Z80",
"Z80K1": {
"Z1K1": "Z13518",
"Z13518K1": "255"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set in 0xFF"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mbfdcfede8dh4kam43i8fln5f00of6c
Z25553
0
59293
195689
2025-06-21T19:47:30Z
SRG372
12739
195689
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25553"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25548",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K1": {
"Z1K1": "Z7",
"Z7K1": "Z13551",
"Z13551K1": {
"Z1K1": "Z7",
"Z7K1": "Z14567",
"Z14567K1": {
"Z1K1": "Z18",
"Z18K1": "Z25548K1"
}
},
"Z13551K2": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
},
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set, composition with remainder"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
5kv8jqzx2zkuac6dl6bmivp323b4wse
Z25554
0
59294
195690
2025-06-21T19:48:27Z
SRG372
12739
195690
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25554"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25548",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z25426",
"Z25426K1": {
"Z1K1": "Z18",
"Z18K1": "Z25548K1"
},
"Z25426K2": {
"Z1K1": "Z13518",
"Z13518K1": "0"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set, composition with get nth bit"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
kknqjgfy2xsxv4jne6puxh0foxdg3wb
Z25555
0
59295
195691
2025-06-21T20:04:26Z
SRG372
12739
195691
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25555"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25548",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z25548( Z25548K1 ) {\n\treturn (Z25548K1 % 2) != 0\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set, js"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1t2hq1vjk48yfgu9su4303bhpr0u19i
Z25556
0
59296
195692
2025-06-21T20:10:19Z
SRG372
12739
195692
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25556"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25548",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25548(Z25548K1):\n\treturn (Z25548K1 % 2) != 0"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is lowest bit set, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7k53qncc8biujoqdxy5xvd96dmgyjr7
Z25557
0
59297
195694
2025-06-21T21:40:48Z
Laura240406
11557
195694
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25557"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "B"
}
]
}
}
],
"Z8K2": "Z16683",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25557"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Calculates j-invariant of a montgomery curve."
}
]
}
}
4wnjkdq3p5l6oerx7fimezusyh2bme6
195698
195694
2025-06-21T21:48:49Z
Laura240406
11557
195698
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25557"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "B"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C"
}
]
}
}
],
"Z8K2": "Z16683",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25557"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Calculates j-invariant of a montgomery curve."
}
]
}
}
kzdqeu0ltf5prv8l9qvktqdv3f2h6ma
195699
195698
2025-06-21T21:49:17Z
Laura240406
11557
195699
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25557"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "B"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "p"
}
]
}
}
],
"Z8K2": "Z16683",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25557"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Calculates j-invariant of a montgomery curve."
}
]
}
}
s97lgejdanz3jkplqrpfgr6v5hpept2
195730
195699
2025-06-22T06:25:43Z
Laura240406
11557
195730
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25557"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "B"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z25557K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "p"
}
]
}
}
],
"Z8K2": "Z13518",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25557"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Calculates j-invariant of a montgomery curve."
}
]
}
}
bn8u3tm1wzgbu7oezdhtxwjiz77hxzp
195742
195730
2025-06-22T07:21:17Z
BunnypranavClone
13261
small test related to [[Wikifunctions:Project chat#Raw type editing]], will revert shortly.
195742
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25557"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z25557K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "B"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z25557K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "p"
}
]
}
}
],
"Z8K2": "Z13518",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25557"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Calculates j-invariant of a montgomery curve."
}
]
}
}
c2gz7o9zwua3qa590pw9074oqb6nnph
195743
195742
2025-06-22T07:21:42Z
Bunnypranav
9976
Reverted 1 edit by [[Special:Contributions/BunnypranavClone|BunnypranavClone]] ([[User talk:BunnypranavClone|talk]]) to last revision by Laura240406 (TwinkleGlobal)
195743
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25557"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25557K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "B"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z25557K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "p"
}
]
}
}
],
"Z8K2": "Z13518",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25557"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Calculates j-invariant of a montgomery curve."
}
]
}
}
bn8u3tm1wzgbu7oezdhtxwjiz77hxzp
Z25558
0
59298
195695
2025-06-21T21:43:24Z
Laura240406
11557
195695
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25558"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25557",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25557(Z25557K1, Z25557K2):\n\treturn 256 * (Z25557K1 ** 2 - 3) ** 3 // (Z25557K1 ** 2 - 4)"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
eq5hbfhgzc04v2d05kbwfvtb6yxhz6a
195697
195695
2025-06-21T21:46:30Z
Laura240406
11557
added checks
195697
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25558"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25557",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25557(Z25557K1, Z25557K2):\n\tassert Z25557K1 ** 2 != 4\n\tassert Z25557K2 != 0\n\t\n\treturn 256 * (Z25557K1 ** 2 - 3) ** 3 // (Z25557K1 ** 2 - 4)"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gba0hy99kfig4tfwmf0i4t9i9pfl66q
195700
195697
2025-06-21T21:50:01Z
Laura240406
11557
fix params
195700
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25558"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25557",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25557(Z25557K1, Z25557K2, Z25557K3):\n\tassert Z25557K1 ** 2 != 4\n\tassert Z25557K2 != 0\n\t\n\treturn 256 * (Z25557K1 ** 2 - 3) ** 3 * pow((Z25557K1 ** 2 - 4), -1, Z25557K3)"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
f0hjese78otpnob0kp6usk6yml8dh67
195702
195700
2025-06-21T21:52:13Z
Laura240406
11557
add modular reduction before return
195702
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25558"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25557",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25557(Z25557K1, Z25557K2, Z25557K3):\n\tassert Z25557K1 ** 2 != 4\n\tassert Z25557K2 != 0\n\t\n\treturn (256 * (Z25557K1 ** 2 - 3) ** 3 * pow((Z25557K1 ** 2 - 4), -1, Z25557K3)) % Z25557K3"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ovq2t755xlnctrvfm8yfbtstnaupv1j
Z25559
0
59299
195696
2025-06-21T21:44:34Z
Laura240406
11557
195696
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25559"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "486662"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z16688",
"Z16688K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "39240375672115510010799456308813573486606784421612167109713554819120306934551"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Curve25519 j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
siiv78rfo0o8bygl2acn3dh7jo18lw2
195701
195696
2025-06-21T21:51:03Z
Laura240406
11557
add p
195701
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25559"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "486662"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K3": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "57896044618658097711785492504343953926634992332820282019728792003956564819949"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z16688",
"Z16688K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "39240375672115510010799456308813573486606784421612167109713554819120306934551"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Curve25519 j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
s6cs0d2xbx9c3xghtm7jv5ihmbgoa1y
195731
195701
2025-06-22T06:27:09Z
Laura240406
11557
change type
195731
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25559"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "486662"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K3": {
"Z1K1": "Z13518",
"Z13518K1": "57896044618658097711785492504343953926634992332820282019728792003956564819949"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "39240375672115510010799456308813573486606784421612167109713554819120306934551"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Curve25519 j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
cajtde2r7gaxxd2ojlbyjppjxfogza4
Z25560
0
59300
195703
2025-06-21T21:54:15Z
Laura240406
11557
195703
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25560"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "156326"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K3": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018365439"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z16688",
"Z16688K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "192923616941671353894620577791698885138539890790403545635778669630361422792283224723129192587555080910965588810561254899639413013332596"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Curve448 j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ic9mciwpn61fbn59avc3kjnnxhvyjxs
195732
195703
2025-06-22T06:28:06Z
Laura240406
11557
change type
195732
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25560"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "156326"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K3": {
"Z1K1": "Z13518",
"Z13518K1": "726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018365439"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "192923616941671353894620577791698885138539890790403545635778669630361422792283224723129192587555080910965588810561254899639413013332596"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Curve448 j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
p7tn040wtzymjodrrbuxeuhn9w3mnmf
195837
195732
2025-06-22T09:40:38Z
Laura240406
11557
copied wrong curve oops
195837
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25560"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "229969"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K3": {
"Z1K1": "Z13518",
"Z13518K1": "19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153221"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "17852179073532890380275633294400079094525862230567524963067740353042416279563650365487136186997985698605286315683860"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Curve383187 j-invariant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7aj722phxkek80rk2y70co6zf48na8o
Z25561
0
59301
195704
2025-06-21T21:56:15Z
Laura240406
11557
195704
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25561"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25557",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z25557(Z25557K1, Z25557K2, Z25557K3) {\n if (Z25557K1 ** 2n === 4n) throw 0;\n if (Z25557K2 === 0n) throw 0;\n \n function modInverse(a, m) {\n\t let m0 = m, x0 = 0n, x1 = 1n;\n\t if (m === 1n) return 0n;\n\t\n\t while (a \u003E 1n) {\n\t let q = a / m;\n\t [a, m] = [m, a % m];\n\t [x0, x1] = [x1 - q * x0, x0];\n\t }\n\t\n\t if (x1 \u003C 0n) x1 += m0;\n\t return x1;\n\t}\n\n const numerator = 256n * (Z25557K1 ** 2n - 3n) ** 3n;\n const denominator = Z25557K1 ** 2n - 4n;\n\n const inverseDenominator = modInverse(denominator, Z25557K3);\n\n return (numerator * inverseDenominator) % Z25557K3;\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant, javascript"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
l6t6qe61f6yf4oy6nerm780o5ukg49y
Translations:Category:Contents/1/zh-hant
1198
59302
195721
2025-06-22T04:44:10Z
Winston Sung
2672
Created page with "維基函式庫根分類。"
195721
wikitext
text/x-wiki
維基函式庫根分類。
rcjq0xchbrohrt7zotx5ib6mla0xqu0
Translations:Category:Contents/Page display title/zh-hant
1198
59303
195723
2025-06-22T04:44:22Z
Winston Sung
2672
Created page with "分類:目錄"
195723
wikitext
text/x-wiki
分類:目錄
9xfgg41yrprxvq8s7ul293j3cfzw73o
Translations:Category:Contents/Page display title/zh-hans
1198
59304
195724
2025-06-22T04:44:40Z
Winston Sung
2672
Created page with "分类:目录"
195724
wikitext
text/x-wiki
分类:目录
t7hvszdxfyjwmkyvl21qh92petblx30
Translations:Category:Contents/Page display title/zh-hk
1198
59305
195725
2025-06-22T04:44:50Z
Winston Sung
2672
Created page with "分類:目錄"
195725
wikitext
text/x-wiki
分類:目錄
9xfgg41yrprxvq8s7ul293j3cfzw73o
Z25562
0
59306
195736
2025-06-22T06:35:06Z
Laura240406
11557
195736
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25562"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16661"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "0"
}
},
"Z25557K3": {
"Z1K1": "Z13518",
"Z13518K1": "1234"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z17180"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant with B = 0"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
k0iu9d4cz2rldoqocfbl6iexfllwr07
Z25563
0
59307
195737
2025-06-22T06:35:31Z
Laura240406
11557
195737
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25563"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K3": {
"Z1K1": "Z13518",
"Z13518K1": "1234"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z17180"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant with A = 2"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3kip7nrau12f9dbuq0w8jcnxzg53w2x
Z25564
0
59308
195738
2025-06-22T06:35:56Z
Laura240406
11557
195738
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25564"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25557",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25557",
"Z25557K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16662"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
},
"Z25557K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25557K3": {
"Z1K1": "Z13518",
"Z13518K1": "1234"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z17180"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve j-invariant with A = -2"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
puqdwyyrmz6f16lmcd8uvl46e4kc8ot
Translations:Wikifunctions:Introduction/113/nl
1198
59309
195745
2025-06-22T07:39:11Z
HanV
6833
Created page with "Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen."
195745
wikitext
text/x-wiki
Voer de benodigde invoer in en klik op de knop "Invoegen" rechtsboven om de functie in het artikel in te voegen.
jlhbb1lcx30c6fzzfzx3qgwtco8406w
Translations:Wikifunctions:Introduction/114/nl
1198
59310
195747
2025-06-22T07:39:51Z
HanV
6833
Created page with "U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen."
195747
wikitext
text/x-wiki
U kunt nu het resultaat van de functie zien in het artikel. U kunt doorgaan met het publiceren van de wijzigingen.
r7d14gh5ql0cmy95ewcc8we2qgjczlp
Translations:Wikifunctions:Introduction/115/nl
1198
59311
195749
2025-06-22T07:40:06Z
HanV
6833
Created page with "Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken"."
195749
wikitext
text/x-wiki
Als u de functie wilt bewerken, klik er dan op. Er verschijnt een tip met de functienaam en beschrijving. Klik op de knop "Bewerken".
fifwv5j446u1zhh1c5zv1tpfggy5tl4
Translations:Wikifunctions:Introduction/116/nl
1198
59312
195751
2025-06-22T07:40:32Z
HanV
6833
Created page with "Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken."
195751
wikitext
text/x-wiki
Vervolgens kunt u wijzigingen aanbrengen in de invoer en klikt u op "Wijzigingen toepassen" wanneer u klaar bent met het bewerken.
prmk7j0lj43kfcj07w4yel4k1nu1vak
Translations:Wikifunctions:Introduction/117/nl
1198
59313
195753
2025-06-22T07:40:36Z
HanV
6833
Created page with "'''Resultaten:'''"
195753
wikitext
text/x-wiki
'''Resultaten:'''
n9mhrdgafxv0lcr0zyu2dk1oemj3lfa
Translations:Wikifunctions:Introduction/118/nl
1198
59314
195755
2025-06-22T07:41:14Z
HanV
6833
Created page with "Was het resultaat wat u had verwacht?"
195755
wikitext
text/x-wiki
Was het resultaat wat u had verwacht?
l96g82hy795p3cd1nj1yf6h3heo3kxc
Translations:Wikifunctions:Introduction/119/nl
1198
59315
195757
2025-06-22T07:42:33Z
HanV
6833
Created page with "Heeft u correcties of feedback die u wilt [[$1|''doorgeven'']]?"
195757
wikitext
text/x-wiki
Heeft u correcties of feedback die u wilt [[$1|''doorgeven'']]?
mawbxh755qyv2sh16qh28awxrkxcqgf
Translations:Wikifunctions:Glossary/225/nl
1198
59316
195761
2025-06-22T07:48:06Z
HanV
6833
Created page with "een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[$parser|parser]]. (voorheen "linearizer" genoemd)"
195761
wikitext
text/x-wiki
een functie om een ZObject om te zetten naar een string. Het tegenovergestelde van [[$parser|parser]]. (voorheen "linearizer" genoemd)
beuccvcse56vipethikyqo2vlcv5v7o
Translations:Wikifunctions:Glossary/226/nl
1198
59317
195763
2025-06-22T07:48:10Z
HanV
6833
Created page with "renderer"
195763
wikitext
text/x-wiki
renderer
0s3voxfh0rm6ixpwh1bz4m4vimzgpkw
Translations:Wikifunctions:Glossary/227/nl
1198
59318
195765
2025-06-22T07:48:52Z
HanV
6833
Created page with "Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{$historic|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd."
195765
wikitext
text/x-wiki
Dit is een toekomstige functie, en de betekenis van de term "renderer" in het {{$historic|originele voorstel}}; Deze term komt overeen met het huidige gebruik van "renderer", het kan in de toekomst worden hernoemd.
n67p8upevttv1f7r7uzwnwvjkxsrc62
Translations:Wikifunctions:Glossary/209/nl
1198
59319
195767
2025-06-22T07:49:02Z
HanV
6833
Created page with "schema's"
195767
wikitext
text/x-wiki
schema's
jelbq61r1zq85ku1bm0sy09y9l5axvi
Translations:Wikifunctions:Glossary/210/nl
1198
59320
195769
2025-06-22T07:49:16Z
HanV
6833
Created page with "Zie [[$function-schemata|functie schemata]]."
195769
wikitext
text/x-wiki
Zie [[$function-schemata|functie schemata]].
knb9axow8n6fngkbt4xsqxd6znzrgsy
Translations:Wikifunctions:Glossary/211/nl
1198
59321
195792
2025-06-22T08:11:17Z
HanV
6833
Created page with "typeconverter"
195792
wikitext
text/x-wiki
typeconverter
axttudhco7xfgzl0p5p0gd5dqv4o0as
Translations:Wikifunctions:Glossary/212/nl
1198
59322
195794
2025-06-22T08:11:51Z
HanV
6833
Created page with "Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''."
195794
wikitext
text/x-wiki
Een script dat is geschreven in een programmeertaal (bijv. JavaScript), waarbij een native object (zoals BigInt) wordt gebruikt en een JSON-object wordt geretourneerd dat het bijbehorende ZObject vertegenwoordigt; of ''vice versa''.
an6q578jflitw9mknq1uir1l6zvylgk
Translations:Wikifunctions:Glossary/199/nl
1198
59323
195796
2025-06-22T08:12:00Z
HanV
6833
Created page with "validatie"
195796
wikitext
text/x-wiki
validatie
sedfl8vczqgp82q0utwctdenelbpunx
Translations:Wikifunctions:Glossary/200/nl
1198
59324
195798
2025-06-22T08:12:16Z
HanV
6833
Created page with "De actie die door de [[$validator|validator]] wordt uitgevoerd."
195798
wikitext
text/x-wiki
De actie die door de [[$validator|validator]] wordt uitgevoerd.
s2d2zbh3pu8ftdt1lus8c9sfczifdql
Translations:Wikifunctions:Glossary/213/nl
1198
59325
195800
2025-06-22T08:13:08Z
HanV
6833
Created page with "WikiLambda-systeem"
195800
wikitext
text/x-wiki
WikiLambda-systeem
dnl3dgfeqikx66jgajuujm1jl1vkw3l
Translations:Wikifunctions:Glossary/214/nl
1198
59326
195802
2025-06-22T08:13:34Z
HanV
6833
Created page with "een geautomatiseerd systeemaccount dat een belangrijk onderdeel is van de extensie WikiLambda. Zie $userpage-link voor de huidige functie."
195802
wikitext
text/x-wiki
een geautomatiseerd systeemaccount dat een belangrijk onderdeel is van de extensie WikiLambda. Zie $userpage-link voor de huidige functie.
52j6g4cex0pv3vuegm0kqfrr55zu4qq
Translations:Wikifunctions:Function model/33/nl
1198
59327
195804
2025-06-22T08:14:37Z
HanV
6833
Created page with "== Representatie in JSON =="
195804
wikitext
text/x-wiki
== Representatie in JSON ==
ohlj23xrgmqg9big2qi0wp71kqtl691
Translations:Wikifunctions:Function model/34/nl
1198
59328
195806
2025-06-22T08:14:49Z
HanV
6833
Created page with "Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde."
195806
wikitext
text/x-wiki
Een ZObject kan worden weergegeven in JSON met behulp van de abstracte ZID-sleutels ("Z1K1", enz.), en de JSON-representatie van de waarde.
p06g26gqd6xrdhrtdx7o869oi8p5xc9
Translations:Wikifunctions:Function model/373/nl
1198
59329
195818
2025-06-22T08:23:05Z
HanV
6833
Created page with "De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave."
195818
wikitext
text/x-wiki
De gelabelde versie is vaak dubbelzinnig en kan niet altijd worden vertaald naar een machineleesbare weergave.
e65eo2sncx38unsgsv7p4z5jntrst0z
Translations:Wikifunctions:Function model/382/nl
1198
59330
195820
2025-06-22T08:23:12Z
HanV
6833
Created page with "Een Type vertelt ons hoe we een waarde moeten interpreteren."
195820
wikitext
text/x-wiki
Een Type vertelt ons hoe we een waarde moeten interpreteren.
fq5ukdn84lmmip9w0saax39g75xew3z
Translations:Wikifunctions:Function model/383/nl
1198
59331
195822
2025-06-22T08:24:58Z
HanV
6833
Created page with "In hun definitie bevat een Key informatie over het type object dat het moet bevatten (Z3K1), de globale ID die die sleutel identificeert (Z3 K2), zijn door de mens leesbare labels (Z3k3) en of deze sleutel een identiteitsveld is (Z3 k4)."
195822
wikitext
text/x-wiki
In hun definitie bevat een Key informatie over het type object dat het moet bevatten (Z3K1), de globale ID die die sleutel identificeert (Z3 K2), zijn door de mens leesbare labels (Z3k3) en of deze sleutel een identiteitsveld is (Z3 k4).
drhqq5fxhxs82xcv35rhzk0988fmckt
Translations:Wikifunctions:Function model/384/nl
1198
59332
195824
2025-06-22T08:26:14Z
HanV
6833
Created page with "Met een identiteitssleutel kunnen objecten hun persistente ID opslaan. Functies en typen bevatten bijvoorbeeld een veld voor identificatie. Ook geplande typen, met name opsommingen, zoals grammaticale kenmerken, vereisen identiteit."
195824
wikitext
text/x-wiki
Met een identiteitssleutel kunnen objecten hun persistente ID opslaan. Functies en typen bevatten bijvoorbeeld een veld voor identificatie. Ook geplande typen, met name opsommingen, zoals grammaticale kenmerken, vereisen identiteit.
dkdpl3df03jewxqvjkjcjllbreym1hr
Translations:Wikifunctions:Function model/385/nl
1198
59333
195826
2025-06-22T08:26:34Z
HanV
6833
Created page with "== Opsommingen =="
195826
wikitext
text/x-wiki
== Opsommingen ==
3y6hvq0ymwkzzdglkjjmkx9eoavmee7
195828
195826
2025-06-22T08:26:47Z
HanV
6833
195828
wikitext
text/x-wiki
== Opsommingen (Enumerations) ==
jcerqyn6krylew4zk627nye9ppfgpml
Z25565
0
59334
195832
2025-06-22T09:23:44Z
Laura240406
11557
195832
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25565"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25565K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z25565K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "B"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z25565K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "p"
}
]
}
}
],
"Z8K2": "Z13518",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z25565"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve discriminant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Calculates the discriminant of a montgomery curve."
}
]
}
}
j695r054iwt3aqt0pfq2umhqi9ilssh
Z25566
0
59335
195833
2025-06-22T09:24:50Z
Laura240406
11557
195833
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25566"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25565",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25565(Z25565K1, Z25565K2, Z25565K3):\n\treturn (Z25565K2 ** 2 * (Z25565K1 ** 2 - 4)) % Z25565K3"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve discriminant, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3sp6c9jkhim684tsucp572vnrwc46wa
195835
195833
2025-06-22T09:35:14Z
Laura240406
11557
change impl
195835
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25566"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25565",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25565(Z25565K1, Z25565K2, Z25565K3):\n\tA = Z25565K1\n\tB = Z25565K2\n\tp = Z25565K3\n\t\n\tdef inv(v):\n\t\treturn pow(v, -1, p)\n\t\n\ta = (3 - A**2) * inv(3 * B**2)\n b = (2 * A**3 - 9 * A) * inv(27 * B**3)\n\n b4 = 2 * a\n b6 = 4 * b\n\n return -8 * b4**3 - 27 * b6**2"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve discriminant, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ts81uytavqtwa0eds6bighebzi00mkv
195836
195835
2025-06-22T09:37:44Z
Laura240406
11557
forgot mod reduction
195836
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25566"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25565",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z25565(Z25565K1, Z25565K2, Z25565K3):\n A = Z25565K1\n B = Z25565K2\n p = Z25565K3\n \n def inv(v):\n return pow(v, -1, p)\n \n a = (3 - A**2) * inv(3 * B**2)\n b = (2 * A**3 - 9 * A) * inv(27 * B**3)\n\n b4 = 2 * a\n b6 = 4 * b\n\n return (-8 * b4**3 - 27 * b6**2) % p"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Montgomery curve discriminant, python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
clqmjskyh81y0aw59k35nkz7cfo8umq
Z25567
0
59336
195834
2025-06-22T09:25:48Z
Laura240406
11557
195834
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25567"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25565",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25565",
"Z25565K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "486662"
}
},
"Z25565K2": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z25565K3": {
"Z1K1": "Z13518",
"Z13518K1": "57896044618658097711785492504343953926634992332820282019728792003956564819949"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "3789438435840"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Curve25519 discriminant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
02x7j2slzy49ilao30xgueaeyro6s46
Translations:Template:Historical/text/1/nl
1198
59337
195838
2025-06-22T11:03:43Z
HanV
6833
Created page with "Deze {{{$1|pagina}}} wordt bewaard vanwege historisch belang. Elk genoemd beleid kan achterhaald zijn."
195838
wikitext
text/x-wiki
Deze {{{$1|pagina}}} wordt bewaard vanwege historisch belang. Elk genoemd beleid kan achterhaald zijn.
2tn80x3krwvxret0u0kwqxkicwe75kz
Template:Historical/text/nl
10
59338
195839
2025-06-22T11:03:44Z
HanV
6833
Created page with "Deze {{{$1|pagina}}} wordt bewaard vanwege historisch belang. Elk genoemd beleid kan achterhaald zijn."
195839
wikitext
text/x-wiki
<languages />
<onlyinclude><div lang="{{#bcp47:nl}}" dir="auto">'''Deze {{{type|pagina}}} wordt bewaard vanwege historisch belang. Elk genoemd beleid kan achterhaald zijn.''' {{#if:{{{comment|}}}|<div lang="" dir="auto" style="font-style:italic;">{{{comment}}}</div>|<span lang="en" dir="ltr" class="mw-content-ltr">If you want to revive the topic, you can use the [[{{TALKPAGENAME}}|talk page]] or start a discussion on the [[Wikifunctions:Project chat|Project chat]].</span>}}</div></onlyinclude>
----
{{Translated tag|Historical}}
dzu6xj6eqgz835n3qr6w9uo0rw5xn2b
195841
195839
2025-06-22T11:04:19Z
HanV
6833
Created page with "Als u het onderwerp nieuw leven wilt inblazen, kunt u de [[$1|overlegpagina]] gebruiken of een discussie starten op de [[$2|projectchat]]."
195841
wikitext
text/x-wiki
<languages />
<onlyinclude><div lang="{{#bcp47:nl}}" dir="auto">'''Deze {{{type|pagina}}} wordt bewaard vanwege historisch belang. Elk genoemd beleid kan achterhaald zijn.''' {{#if:{{{comment|}}}|<div lang="" dir="auto" style="font-style:italic;">{{{comment}}}</div>|Als u het onderwerp nieuw leven wilt inblazen, kunt u de [[{{TALKPAGENAME}}|overlegpagina]] gebruiken of een discussie starten op de [[Wikifunctions:Project chat|projectchat]].}}</div></onlyinclude>
----
{{Translated tag|Historical}}
j3i8vgja65trtr9vdk7ve4wwm2hoxcr
Translations:Template:Historical/text/2/nl
1198
59339
195840
2025-06-22T11:04:18Z
HanV
6833
Created page with "Als u het onderwerp nieuw leven wilt inblazen, kunt u de [[$1|overlegpagina]] gebruiken of een discussie starten op de [[$2|projectchat]]."
195840
wikitext
text/x-wiki
Als u het onderwerp nieuw leven wilt inblazen, kunt u de [[$1|overlegpagina]] gebruiken of een discussie starten op de [[$2|projectchat]].
p7k36yg5hqc4mpxd5ctjagl2yfvzo0i
Translations:Template:Section resolved/i18n/1/nl
1198
59340
195842
2025-06-22T11:05:49Z
HanV
6833
Created page with "'''<span $style >Let op:</span>''' Het sjabloon voor "sectie opgelost" heeft een geldige datum nodig. De sectie wordt anders niet gearchiveerd. Gebruik in plaats daarvan $code."
195842
wikitext
text/x-wiki
'''<span $style >Let op:</span>''' Het sjabloon voor "sectie opgelost" heeft een geldige datum nodig. De sectie wordt anders niet gearchiveerd. Gebruik in plaats daarvan $code.
s4cm642u0rz332zlyglxnzaiq4onp6v
Template:Section resolved/i18n/nl
10
59341
195843
2025-06-22T11:05:50Z
HanV
6833
Created page with "'''<span $style >Let op:</span>''' Het sjabloon voor "sectie opgelost" heeft een geldige datum nodig. De sectie wordt anders niet gearchiveerd. Gebruik in plaats daarvan $code."
195843
wikitext
text/x-wiki
<languages />
<onlyinclude>{{#ifeq:{{{1|}}}|error
|<!-- then: -->'''<span style="color: red;" >Let op:</span>''' Het sjabloon voor "sectie opgelost" heeft een geldige datum nodig. De sectie wordt anders niet gearchiveerd. Gebruik in plaats daarvan <code><nowiki>{{Section resolved|1=~~~~}}</nowiki></code>.
|<!-- else: --><span lang="en" dir="ltr" class="mw-content-ltr">This section is resolved and can be archived. If you disagree, replace this template with your comment.</span>}}</onlyinclude>
{{translated tag|marker}}
qowngsis7qhw3ztnfhiy5uy379t0o8l
195845
195843
2025-06-22T11:06:26Z
HanV
6833
Created page with "Ik denk dat deze discussie is afgerond en kan worden gearchiveerd. Indien u het hier niet mee eens bent, aarzel dan niet om dit sjabloon te vervangen door uw opmerking."
195845
wikitext
text/x-wiki
<languages />
<onlyinclude>{{#ifeq:{{{1|}}}|error
|<!-- then: -->'''<span style="color: red;" >Let op:</span>''' Het sjabloon voor "sectie opgelost" heeft een geldige datum nodig. De sectie wordt anders niet gearchiveerd. Gebruik in plaats daarvan <code><nowiki>{{Section resolved|1=~~~~}}</nowiki></code>.
|<!-- else: -->Ik denk dat deze discussie is afgerond en kan worden gearchiveerd. Indien u het hier niet mee eens bent, aarzel dan niet om dit sjabloon te vervangen door uw opmerking.}}</onlyinclude>
{{translated tag|marker}}
hfra6fpz87ul7pbq0nvavl9ixisc27z
Translations:Template:Section resolved/i18n/2/nl
1198
59342
195844
2025-06-22T11:06:25Z
HanV
6833
Created page with "Ik denk dat deze discussie is afgerond en kan worden gearchiveerd. Indien u het hier niet mee eens bent, aarzel dan niet om dit sjabloon te vervangen door uw opmerking."
195844
wikitext
text/x-wiki
Ik denk dat deze discussie is afgerond en kan worden gearchiveerd. Indien u het hier niet mee eens bent, aarzel dan niet om dit sjabloon te vervangen door uw opmerking.
62g1olpz1hgi75qi3qbtbid317jd79z
Translations:Template:Translated tag/i18n/1/nl
1198
59343
195846
2025-06-22T11:07:27Z
HanV
6833
Created page with "''OPMERKING:'' Gebruik dit sjabloon ''niet'' rechtstreeks! Dit is alleen voor de vertaling."
195846
wikitext
text/x-wiki
''OPMERKING:'' Gebruik dit sjabloon ''niet'' rechtstreeks! Dit is alleen voor de vertaling.
rorgjdlwos5oilpgs65hiwtfq599uxp
Template:Translated tag/i18n/nl
10
59344
195847
2025-06-22T11:07:27Z
HanV
6833
Created page with "''OPMERKING:'' Gebruik dit sjabloon ''niet'' rechtstreeks! Dit is alleen voor de vertaling."
195847
wikitext
text/x-wiki
<languages/>
<onlyinclude><div class="translatedTag" style="text-align:center; font-weight:bold;" lang="{{#bcp47:nl}}" dir="{{#dir:nl}}">
''OPMERKING:'' Gebruik dit sjabloon ''niet'' rechtstreeks! Dit is alleen voor de vertaling. {{#ifeq:{{NAMESPACE}}|{{ns:10}}<!-- leave this part out on non-template pages because it won't make sense -->
|<span lang="en" dir="ltr" class="mw-content-ltr">Use <bdi>{{tl|{{{template|{{BASEPAGENAME}}}}}}}</bdi> instead.</span>
}}</div></onlyinclude>
{{translated tag|documentation}}
9daqzsuvynspckl9iku23oo3kbas690
195849
195847
2025-06-22T11:08:07Z
HanV
6833
Created page with "Gebruik in plaats daarvan $1"
195849
wikitext
text/x-wiki
<languages/>
<onlyinclude><div class="translatedTag" style="text-align:center; font-weight:bold;" lang="{{#bcp47:nl}}" dir="{{#dir:nl}}">
''OPMERKING:'' Gebruik dit sjabloon ''niet'' rechtstreeks! Dit is alleen voor de vertaling. {{#ifeq:{{NAMESPACE}}|{{ns:10}}<!-- leave this part out on non-template pages because it won't make sense -->
|Gebruik in plaats daarvan <bdi>{{tl|{{{template|{{BASEPAGENAME}}}}}}}</bdi>
}}</div></onlyinclude>
{{translated tag|documentation}}
e8p7muba7jv2gk3hi6fzcnxz98rv048
Translations:Template:Translated tag/i18n/2/nl
1198
59345
195848
2025-06-22T11:08:06Z
HanV
6833
Created page with "Gebruik in plaats daarvan $1"
195848
wikitext
text/x-wiki
Gebruik in plaats daarvan $1
4o2b9x95dg1l0a3f3y7f2lgb5ur8tz0