Section Header
  
  
    + name    := TRAVERSABLE[E];
  
  
    - comment := "A `TRAVERSABLE[E_]' is a finite readable sequence of objects of type E_.";
  
  
 For instance, `COLLECTION's and `STRING's are `TRAVERSABLE'.
  
  
 A good performance should always be obtained by sequentially acessing a 
  
 `TRAVERSABLE' with increasing indexes (from `lower' to `upper'), as 
  
 demonstrated in the following code snippet :
  
  
  i := a_traversable.lower;
  
  {i > a_traversable.upper}.until_do {
  
    do_something_with (a_traversable.item i);
  
    i := i + 1;
  
  };
  
  
 Other accessing methods (including random access and sequential access 
  
 from `upper' to `lower') may or may not lead to acceptable performance, 
  
 depending on the particular implementation of `TRAVERSABLE'.
  
Section Inherit
  
  
    - parent_object:OBJECT := 
  
Section Public
  
  
  
 Indexing:
  
  
  
    - lower:INTEGER <-
  
         Minimum index.
  
        
  
         See also `upper', `valid_index', `item'.
  
  
    - upper:INTEGER <-
  
         Maximum index.
  
        
  
         See also `lower', `valid_index', `item'.
    
  
    - valid_index i:INTEGER :BOOLEAN <-
  
         True when `i' is valid (i.e., inside actual bounds).
  
        
  
         See also `lower', `upper', `item'.
  
  
  
 Counting:
  
  
  
    - count:INTEGER <-
  
         Number of available indices.
  
        
  
         See also `is_empty', `lower', `upper'.
  
  
    - is_empty:BOOLEAN <-
  
         Is collection empty ?
  
        
  
         See also `count'.
    
  
  
 Accessing:
  
  
  
    - item i:INTEGER :E <-
  
         Item at the corresponding index `i'.
  
        
  
         See also `lower', `upper', `valid_index'.
  
  
    - first:E <-
  
         The very `first' item.
  
        
  
         See also `last', `item'.
  
  
    - last:E <-
  
         The `last' item.
  
        
  
         See also `first', `item'.