by Ricardo Fernández Serrata
Checks if ANY 2 values are "deeply equal" (can check flat and nested containers). It uses an explicit stack to avoid subroutine calls, for better performance and memory usage.
I used a stack format where each frame contains a 3-tuple (array of fixed length of 3), instead of storing each value as an individual frame. `top` is the last stack frame. top is the iteration index of the last frame. top and top are inner/deeper values of A and B respectively.
If I didn't use 3-tuples, the format would've been like this: S[-1] is B, S[-2] is A and S[-3] is the iteration index. This format would require more blocks, so I fit all 3 values in 1 frame for a minified flow.
type(a)[-1] = 0x79
(equal to substr(type(a), -1, 1) = "y")
Checks if `a` is a container (array or dictionary) and not a text string.
I already included example inputs, you can edit them to check correctness of this flow.
There are some special cases where "=" operator successfully detects that 2 containers are equal. This happens when 2 or more variables are referencing the same memory address (shared data structure), which allows programming languages (AM included) to easily detect the equality of these variables just by reading metadata.
This is why I included the "a = b" check, to avoid unnecessary processing, when possible.
The order of the logical ANDs matters, but I don't know if the order I used is the fastest
Rate and review within the app in the Community section.