o42a-0.1.5 Release Notes
Links and Variables
The links and the variables are objects now, inherited from
Variable core objects respectively. Their values contain a target objects now.
The link interface can be passed to the link object construction expression as
type parameter. The link target can be specified as a part of a special phrase:
Link (`integer)  Link (`integer) 42 // Works also Link (`integer) ( // Canonical form = 42 )
The old link definition syntax is still supported without any changes.
A backquote can be used to access the link object itself instead of it’s target:
An arrow can be used to explicitly dereference the link object:
link (`integer)  ->.
Links IR and Normalization
In the simple cases, the link and the variable objects have the same internal representations as a link and variable artifacts had before. So, no overhead will be added, unless a complex link definition or implementation used.
Artifacts are Gone
The link and the variable was the only artifacts apart from the object. Now, when they became objects, the notion of “artifact” is no longer needed. Everything is an object now!
The base array objects were renamed:
- the immutable array is now called
- the mutable array is now called
- the base object of these two is now called
The array constructor syntax have been simplified. To construct the row simply use brackets:
Arr := [1, 2, 3]
A type parameters can be used now to specify the array element type:
Arr := array (`string) ( = ["a", "b", "c"] )
An array constructor part of the phrase requires extra brackets to distinguish it from arguments. The core array objects support this syntax for array construction:
Arr := array (`string) [["a", "b", "c"]]
Phrase Syntax Updates
The numeric value is treated as argument when specified without brackets, unless it is a part of name.