
stack = {count: 0, head: none};

fun push(stack, value) {

	node = {prev: null, item: value};

	node.prev = list.head;
	stack.head = node;
	stack.count += 1;
}

fun pop(stack)
{
	if stack.head is none:
		return none; # return it; ?

	value = stack.head.item;
	stack.head = stack.head.prev;
	stack.count -= 1;

	return value;
}

push(stack, 1);
push(stack, 2);
push(stack, 3);
x = pop(stack);
y = pop(stack);
z = pop(stack);
w = pop(stack);

assert x == 3;
assert y == 2;
assert z == 1;
assert w == none;