anchor.diff:  
   == Folding
   
  -Now you can see how the list of items is constructed. However, you may wonder how we could ever use this list, since there is no mean to access its elements. In fact, we only need one operation: folding the list. Any processing you can imagine on a list may be done with a fold. Folding consists in taking a value of the intended result type (generally different from the elements type) and combining it with the first element, then combining the result with the second element and so on until all elements have been processed.
  +Now you can see how the list of items is constructed. However, you may wonder how we could ever use this list, since there is no mean to access its elements. In fact, we only need one operation: folding the list. Any processing you can imagine on a list may be done with a fold. Folding consists in taking a value of the intended result type (generally different from the elements type) and combining it with an element, then combining the result with the next element and so on until all elements have been processed.
   
   === Folding right or left
   
  -We can fold a list starting from the left (the head of the list) or for the right (the last element of the list). To fold from the left, we need a left associative operation. To fold from the right, we need... well, you guess.
  +We can fold a list starting from the left (the head of the list) or for the right (the last element of the list). To fold from the left, we use a left associative operation. To fold from the right, we need... well, you guess.
   
   Here is how we can write a `foldRight` method. First the signature in the abstract parent `List` class:
   
  
positive.code: 
  Now, you think we are left with the hard part: implementing the `pack` method. First, let's look at the algorithm:
  
  - look at the first element. If it does not fit in the knapsack, discard it.
  
  - if it fits, lets make two different computations:
  
  
negative.code:   public final int weight;
    public final double value;
  
    public Item(String name, int weight, double value) {
      this.name = name;
      this.weight = weight;
      this.value = value;
  