Because of the additional conditions, Microsoft rearranged the argument list
It consists of the argument list, declaration of all variables, initialization of adjoint variables, and the combination of the adjoint statements.
The argument list of the adjoint procedure consists of the required variables of the original argument list and the adjoint variables corresponding to the active variables of the original argument list.
code adjoint code CALL SUB( X, Y, A ) CALL ADSUB( X, Y, A, ADX, ADY) In order to satisfy modularity we assume that each adjoint variable in an argument list will be used and computed inside the adjoint procedure.
Example of an adjoint procedure call having an expression in its argument list. A is a passive variable; X and Y are active variables.
We imagine Scheme procedures ([MATHEMATICAL EXPRESSION NOT REPRODUCIBLE IN ASCII]) as taking a single argument list. Whether they are actually implemented this way is immaterial to the type system.
The binary type constructor (arg ..) and the type constant noarg encode argument list types.
All elements in the tail of a variable-length argument list must have the same type, as the tail of an argument list is represented by a recursive type.
It can be seen that this module has two inputs and one output, as specified in the argument list.
At the same time, one has to substitute the argument list with the actual input and output nodes (Delivery, KanbanReturning and ContainerReturning).
On VAX, a routine refers to its arguments via an argument pointer register (AP) which points to an argument list
built in memory by its caller.
Details captured for subprograms include return data types and argument lists
. Generic package parameters and actual parameters of generic instantiations are also captured.