Compositions
The following code examples demonstrate the built-in composition type offered by the language. See section [TBD] for details.
Type Declaration
Specific Composition Name: Composition.
`Declare a composition that can only contain up to the specified types.`
Constrained Composition Name A: {Context A, Context B}.
Constrained Composition Name B: {Context A, Context B, Context B}.
Constrained Composition Name C: {Context A, {*Context B*}}.
Operators
Accessing
Containment
some composition: Composition [context a, context b];
`Index checks.`
some composition(0?) = true
some composition(1?) = false
`ID checks.`
some composition(context a id?) = true
some composition(context c id?) = false
some composition: Composition [context a, context b];
some composition(1?, context c id?) = {true, false}
Retrieving
some composition: Composition [context a, context b];
some composition(0) = {context a}
some composition(context b id) = {context b}
some composition: Composition [context a, context b];
some composition(...) = {context a, context b} `Total collection accessor.`
Difference (Remove Elements)
{context a, context b} - {context b, context c} = {context a}
Expansion
`All Context B instances related to context a through a Behavior are unioned.`
{context a} # Context B = {context a, context b}
`All Context B buckets related to context a through its Behaviors are unioned.`
{context a} # {*Context B*} = {context a, context b bucket}
Intersection
{context a, context b} % {context b, context c} = {context b}
Reduction
`All Context B instances are removed.`
{context a, context b, other context b} !# Context B = {context a}
`All Context B buckets are removed.`
{context a, context b bucket, context b} !# {*Context B*} = {context a, context b}
Union (Appending)
{context a, context b} + {context b, context c} = {context a, context b, context c}
{context a} + {{context a, context b}} = {context a, {context a, context c}}
As Variables
Assignment
some composition is {context a, context b},
some composition is {context a, context b} + {context b, context c},
some nested composition is {context a, {context b, context c}},
`Index-based assignment.`
some composition(0) is {context d},
some composition is {context a} # Context B,
Declaration
some composition: Composition [context a, context b];
specific composition: Specific Composition Name [context a, context b];
constrained composition: Constrained Composition Name A [context a];
constrained composition: Constrained Composition Name A [context a, context b];
some composition: Composition [{context a, context b} + {context b, context c}];
some composition: Composition [{context a} # Context B];
some nested composition: Composition [context a, some composition];
Last updated