Call it x["tos"] and x["doc"] to avoid me being confused and
having to remember what is what.
-W
On Mon, 11 Dec 2023 at 13:38, Ed Morton <mortoneccc@comcast.net>
wrote:
Just a suggestion regarding calling `length()` for
push()/pop() stack
operations:
On 12/10/2023 8:18 AM, Christian Schmidt wrote:
> Hi all,
>
> First of all I'd like to state that I do not consider the
following
> necessarily a bug; however I'd like to discuss the current
> implementation, and have not found a better place to do so.
>
> My issue is that I can't use
>
> x[length(x)] = y
>
> e.g. to emulate to push to a stack, without explicitly
converting x
> into an array first, e.g. by "delete x".
No need to call `length(x)` for every push()/pop(), you can
implement a
stack by storing it's top index in `x[0]` (or some other unused,
probably negative, index instead if you prefer):
function push(x,y) { x[++x[0]] = y }
function pop(x) { delete x[x[0]--] }
As well as not having the problem you described that also
allows you to
use other unused indices to store other attributes about the
stack, e.g.
a description like `x[-1] = "this is a stack of connection
requests"`,
which you couldn't do if you were relying on `length(x)` to
tell you the
index of the top of the stack.
Regards,
Ed.
--
Wolfgang Laun