MODULE queue.

queue(Is) :- (front(B), back(B)) -o q(Is).
q(enq(X)::Is) :- back(X::B), (back(B) -o q(Is)).
q(deq(X)::Is) :- front(X::Xs), (front(Xs) -o q(Is)).
q(nil) :- front(nil), back(nil).
