queue:
{ :start 0 :end 0 }
enqueue q item:
set-to q q!end item
set-to q :end ++ q!end
dequeue q:
if empty q:
Raise :value-error "popping from empty queue"
q! q!start
delete-from q q!start
set-to q :start ++ q!start
empty q:
= q!start q!end