11. Glossary

11.1. Language and runtime

value

The primitive unit of data. Can be abbreviated to “val”. See Values.

embedded properties

Data contained in a value not via variables. See Embedded properties.

variable

A pair of the owner value and the symbol, which can have a content value. See Variables.

owner of the variable

The value which owns the variable. See Variables.

symbol of the variable

The Unicode code point sequence of the variable. Can be abbreviated to “sym”. See Variables.

function symbol

A symbol which is accepted by [a-z_][a-z0-9_?]*. See Variables.

data symbol

A symbol which is accepted by ([a-z_][a-z0-9_?]*)?[A-Z][a-zA-Z0-9_?]*. See Variables.

variable-load operation
variable-store operation
variable-symbols operation

Three primitive operations about variables. See Variable operations.

compile

Steps to convert a program to a function. Compilation is done by Program.compile. See Language specification for the specification of compilation.

desugaring

A step of compile which transforms a program to its desugared form. See Desugaring.

desugared form

A program made by desugaring. A program in the desugared form can be an input of translation. See Desugaring.

translation

A step of compile which converts a program in the desugared form into abstract instructions. See Translation.

abstract stack machine

An abstract machine which evaluates abstract instruction. See Evaluation.

abstract instruction

An instruction which is evaluated by abstract stack machine. See Evaluation.

call stack

The stack of an abstract stack machine, which consists of a sequence of abstract instructions. See Call stack.

tail call

A function call done at the end of a function call, which is done by tailcall instruction.

tail call elimination

The requirement for the runtime that consecutive tail calls do not cause stack overflow. See tailcall instruction.

delimited continuation

A function to resume the evaluation from an invocation of Kont_tag.shift to the end of an invocation of Kont_tag.reset. Can be abbreviated to “kont”. See kont instruction for the definition.

host procedure

An abstract unit of information to specify a procedure within the host system. See hostcall instruction.

runtime

The runtime is a system which consists of values, executors and other components.

host system

The host system is a system on which the runtime is implemented. Typically, the host system is a Java Virtual Machine.

module system

A subsystem of the runtime which manages modules. See Module system.

module

A value loaded by the module system. Can be abbreviated to “mod”. See Module system.

module base paths

A set of directories where module sources can be placed. See Module base paths.

11.2. Builtin library

function

A value of type fun. Can be abbreviated to “fun”.

variable reference

A value of type varref. Can be abbreviated to “varref”.

vector

A value of type vec. Can be abbreviated to “vec”.

bool

A value of type bool, which is either true or false.

exception

A value of type exception, which represents a runtime error.

delimited continuation tag

A value of type kont_tag. See delimit instruction.

11.3. Patterns and conventions

method

A function which is stored in a variable of a value, and used to do an operation for the value as the receiver. See Methods.

constructor

A function which creates a new value. See Constructors.

trait

A vec which stores methods and the symbols, which are spreaded as arguments of new_val. See Constructors.

thunk

A function that is not used as a method, and takes no arguments. See Thunks.

predicate

A function that is not used as a method, takes one argument, and returns a bool. See Predicates.

constant

A thunk which returns a same value every time. See Constants.

continuation

A function which is called at the tail of a function call. Don't confuse with delimited continuation. See Continuation.

continuation passing style

Composition of a program where the continuation is passed from the caller. See Continuation.

kinkdoc

API documentation system for Kink programs. See Kinkdoc: API Documentation system.