{
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"