{
    Let new. new

    Let push queue item.
        {
            Let incoming. (item::queue.incoming)
            Let outgoing. queue.outgoing
        }

    Define pop queue.
        Match queue.outgoing
        | `cons.{item outgoing}
            Let queue.
                {
                    Let incoming. queue.incoming
                    Let outgoing. outgoing
                }
            In
            `just.{item queue}
        | `nil
            Match queue.incoming
            | `nil `nothing
            | _ Goto (pop $ new $ LIST.reverse queue.incoming)
            ;
        ;
}

Where

Let new init.
    {
        Let incoming. []
        Let outgoing. init
    }

Where

Let LIST. Package "list"