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