#!/usr/bin/ruby
#
## https://rosettacode.org/wiki/Queue/Definition
#
class FIFO(*array) {
method pop {
array.is_empty && die "underflow";
array.shift;
};
method push(*items) {
array += items;
self;
};
method empty {
array.len == 0;
};
};
var f = FIFO();
say f.empty; # true
f.push('foo');
f.push('bar', 'baz');
say f.pop; # foo
say f.empty; # false
var g = FIFO('xxx', 'yyy');
say g.pop; # xxx
say f.pop; # bar