Skip to content

reference

pannous edited this page Feb 20, 2023 · 4 revisions

reference

A reference is an abstract handle to an object.

references in angle

see Variables for now

reference in wasp

Wasp as data language can represent cyclic graphs through references independent of the consuming programming language ( like Angle).

TODO Previous node_pointer can be referenced either via semantically meaningful id field or by name using a special reference prefix $.

This concept is WIP and subject to changing.

Ephemeral examples of a cyclic graph:

a {
	b
	c { parent=$a }
}
a[id=1]{
	b
	c { parent=$1 }
}

TODO Variables are referenceIndices to values. peter=person#2

One needs to distinguish between changing the reference and changing the value of the reference. (In c this is achieved via *x=7 or int &y=… y=8).

In angle this might be achieved with special keywords reference or value or inout:

peter=person#2
peter=person#3 // changing reference
value of peter=James // now person#3 is charged to James (following reference)
person#3=John // now peter points to John too (reference following)

As in swift, reference is the standard modus operandi, only when attributes are charged will a true copy occur : Swift doesn't copy until there's a mutation or the possibility of mutation.

Internal usage:

Special hardwired ternary operators: array#position=value, list[index]=value, data[pattern]=value, condition?then:else The first cases can be handled via references

Home

Philosophy

data & code blocks

features

inventions

evaluation

keywords

iteration

tasks

examples

todo : bad ideas and open questions

⚠️ specification and progress are out of sync

Clone this wiki locally