2.5. Object system

This chapter describes the object system.

2.5.1. Values


The primitive unit of data. Value can be abbreviated to val.

For example, each line of the following example produces a value.

'Foo' # a str value
42    # a num value
{(:Num) Num * 2 } # a fun value

Aside from variables, a value has intrinsic properties.

intrinsic properties

Any data contained in a value not via variables.

The following are examples of intrinsic properties:

Intrinsic properties cannot be accessed directly from Kink programs, but can be used by the runtime, or host procs.

2.5.2. Variables


A pair of the owner value and the sym, defined as follows: Variables = { (owner, sym) | owner is a value, and sym is a unicode string }. Here, owner is said to be the owner of the variable, and sym is said to be the symbol of the variable. The variable is said to be a variable of owner. Variable can be abbreviated to var.

A variable has a content, which is either empty, or a value. Variable operations

There are three primitive operations about variables.

variable load operation

Gets the content of a variable, which is either empty or a value.

variable store operation

Sets a content value to the variable.

var-syms operation

For value X, gets { sym | the content of variable (X, sym) is not empty }.

Note that you cannot delete a variable. In other words, if the content of a variable is non-empty, it does not become empty. Memory model

A variable acts like a non-volatile field of Java.