# Abstract Wikipedia/更新情報/2020年11月10日

This page is a translated version of the page Abstract Wikipedia/Updates/2020-11-10 and the translation is 37% complete.
Other languages:
 ◀ 抽象的なウィキペディアの更新情報 ▶

これについて、よりわかりやすく正式な説明は関数モデルにありますが、ここではもっと直感的なオブジェクトの説明を作っていきます。

どの Object もそれぞれたった1件のタイプ（型）に該当します。

タイプはオブジェクトの意味を定めます。タイプはまたオブジェクトが有効かどうか決めるものは何か決定します。特定のタイプのオブジェクトはそのタイプの「インスタンス」と呼びます。
ウィキページとして収納されたオブジェクト Object はすべて永続的オブジェクト Persistent Object と呼び、そのオブジェクト Object には識別子 Z-ID があり照合できます。Z-ID はそのページ名でもあります。

タイプ Type がオブジェクト Object の意味を決めるとは？ 例を見てみましょう。

• An Object of Type Positive Integer with the value “`2020`” represents the number 2020. That’s the number you get when you multiply 4, 5 and 101. And because it has the Type of Positive Integer, we know it is a number.
• If the Type of “`2020`” was String, then that wouldn’t represent the number 2020, but rather a sequence of four characters, ‘`2`’, ‘`0`’, ‘`2`’, and ‘`0`’.
• If the Type of it was Gregorian Calendar Year then this would represent the year 2020 in that calendar, a leap year starting with a Wednesday and ending with a Thursday.

The Type decides what you can do with an Object — or, more formally speaking, which Functions you can apply to the given Object:

• If you have a String, you can count the “length” of the String, i.e. how many characters are in the sequence. The result for “`2020`” above would be four.
• If you have a Gregorian Calendar Year, you might also be able to ask for the “length”, but the result should probably be 366 days (as it is a leap year).
• If you have a Positive Integer and ask for its “length”, you might be asking for the logarithm in base 10, or you might be asking for the multiplicative persistence.
• But all of these would be different Functions (that may well have the same label, “length”, in English; their descriptions would explain in more detail what they would do).

The Function states which Types it can take, and the Type decides what an Object means.

Types can be very diverse:

• Some Types might have a small, explicitly defined number of instances. These are called Enumerations, because all the instances of the Type are known in advance and enumerated, and each instance must be one of these few possible values.
The classic example of such a Type is Boolean, named after George Boole, which has exactly two instances: True and False. Another Enumeration would be the Days of the Week.
• Other Types can be simple but have an infinite number of possible instances.
Examples of such Types are String for sequences of characters, and Positive Integer for the counting numbers.
• 他にはよく似たタイプ同士が組み合わさったタイプもありえます。
For example, one way to represent an Integer would be to compose it from a Positive Integer and a Boolean, where the Boolean decides whether the Integer is positive or negative, and the Positive Integer represents the absolute value.

Not every Object has to be stored as a wiki page. For example, there is no need to store the number 2020 as an Object in the wiki, as it can be easily just created on the fly.

This is how Objects are built and represented. Objects of almost all Types are called Literals. A Literal is an Object that, when evaluated, results in itself.
For example, when you evaluate the number 2020, the result is the number 2020.

But there are two very special Types whose instances are not Literals, and these two types are References and Function Calls.

• References are a special Type of Object that refers to a Persistent Object by its Z-ID. It basically just says “here, this Reference, should really be just this Object that is referenced to by this Z-ID”.
Evaluating a Reference results in the referenced Object. A Reference does not need to be evaluated immediately, but can be evaluated whenever needed.
In fact, it is sometimes impossible to evaluate all References fully, as it can easily lead to a recursion and infinite objects.
• The other special Type of Object is the Function Call. A Function Call consists of a Function and a List of Arguments.
Evaluating a Function Call is the core “magic” of the whole system: it is basically replacing a Function Call with the result of that Function Call.
E.g. evaluation would be replacing the Function Call to the Function with the label “length” and the argument “`2020`” of Type String with the value “`4`” of Type Positive Integer.

Function Calls are usually created on the fly. We wouldn’t, in general, create a new wiki page with a Persistent Object in which we store the Function Call described above, but rather we would send that Function Call to an evaluation engine which, in turn, evaluates the Function Call and returns the result.There is really not much more to the system than that. A Function Call is in many ways analogous to using a MediaWiki template with parameters.

この説明の意味が通じて、計画中のシステムの理解に役立てば幸いです。 私たちは現在、投稿者がウィキの内部でタイプを作成するようにシステムの部分を開発中で、コミュニティがタイプを作成しどれを存続するか管理できるようにします。質問をご自由にお寄せください。