A container also has a type permanently attached to it that constrains what values it may contain. A variable will sometimes contain no value. Containers compare by identity only. Containers are the only things that can change in Avail, greatly simplifying the construction of many design patterns. A tuple is just like the mathematical notion of a tuple - immutable and heterogenous.
Provisions exist for describing tuple types that are semi-heterogenous and unbounded.
This type is special in that it does not inherit from all. It does inherit from void, though. Lists are generated automatically by the compiler whenever it sees a sequence of expressions separated by commas. Keeping all and list disjoint allows a clean mechanism of overloading of methods to accept one or more arguments. This allows code to be specialized by quantity without preventing tuples, sets, and user defined collections from being passed as single objects.