Modified Pass by Name Example
changed the local variable in SWAP_BY_NAME to P to eliminate ambiguity
program I : integer; A : integer array; SWAP_BY_NAME : procedure (X : name, Y : name) P : integer; begin |
Trace |
Output |
|
P := X; |
P := I |
P <-3 |
|
X := Y; |
|
I <- 6 |
|
Y := P; |
A[I] := P |
A[I] = A[6] <- 3 |
|
end; begin |
|
|
|
I := 3; |
I <- 3 6 |
|
|
A[I] := 6; |
A[I] = A[3] <- 6 |
|
|
output
I, A[3]; |
|
3,
6 |
|
SWAP_BY_NAME (I, A[I]); |
|
|
|
output I, A[3]; |
|
6, 6 |
|
end; |
|
|