ASPL User Guide v 1.00
© 2025 Bassem W. Jamaleddine
21. 7Tying to Oscillators with Cyclic Containment
Finding the Intersection of Oscillators Over Simultanious Temporal Calls to GG-function
ELEMENTS-GROUPING-CLASS: TIEWAVESGROUP
Sample Workspace: TIEDWAVES
GG-function: ggtiewaves()
Get the oscillating wave along its summed areas:
W1 = ggtiewaves( .. ) where W1 is a set variable
W2 = ggtiewaves( .. ) where W2 is a set variable
Tying to Oscillators with Cyclic Containment
Tied attributes are bound to functions defined within their corresponding egC-feeder module: Udev. You can view or edit this module using the tilde-extension ~udev. The Udev module is managed by ASPL containment manager, and lexical variables defined in it have their values persisted between intermittent calls to the tied functions. Therefore, it is possible to have tied attributes hold their data between subsequent invocations of the GG-function.
ASPL programming is a containment programming and lexical variables that
are defined within the corresponding egC-feeder module: Udev,
are persisted during the runtime of the element grouping class container.ASPL's tied-containment provides the programmer with the capability toIn the following example, we demonstrate how subsequent calls to the GG-function ggtiewaves(), where attributes are hooked to tied oscillator functions, can cycle periodically and the number of points is incremented (with each cycle).
reuse variables throughout temporal invocation of the GG-function.
Consider the following three operations performed in ASPL namedspace TIEDWAVES::aspl> W1 = ggtiewaves(grp1,Waves1,points,100,frequency,1,resetcycle,0,aggregate,1,tiesess,W1)
aspl> sleep 1
aspl> ?3,1 W1
The first operation calls the ggtiewaves() creating the group labeled Waves1 with one hundred points, where the frequency is one. This group, represented by the set variable W1 and labeled Waves1, contains the data of both oscillators. We sleep for a second, then the third operation interrogates the set variable W1, turning it into a differential group variable (since temporal changes are detected which are caused by an increment in the index of the points). Interrogating W1 causes subsequent call to the source of the variable W1, namely the sourcing is done by ggtiewaves(). Since the resetcycle is false, then the oscillating functions defined in Udev.pm will continue incrementing with every call to the aforementioned function. The tiesess is used to tell Udev to continue with the named session W1. The tiesess name can be any name, and if not specified the Udev will assign it a temporary random name.
The following figure shows the net effect of the four calls to the ggtiewaves(): one hundred points per each cycle, for a total of four hundred points for all four cycles. The summed area is also incremented since the aggregation will continue incremeting.
![]()
The following figures shows the four cycles along their summed area as being aggregated and computed by the lambda procedures. However in here the resetaggg is true, causing the aggregation pool to be reset between subsequent calls to ggtiewaves().aspl> W2 = ggtiewaves(grp1,Waves2,points,100,frequency,1,resetcycle,0,aggregate,1,tiesess,W2,resetaggg,1)
aspl> sleep 1
aspl> ?3,1 W2
![]()
The runtime output of the operations can be seen in the following display.