Is there a reason that the modification functions (e.g. add, take, etc) in the Queue module do not return a new Queue.t object? For example, Queue.add returns unit instead of Queue.t.
This seems inconsistent with (and less functional than) the List and Array modules that return a fresh object after each modification function.