title: Why does Option not extend the Iterable trait directly?
body: <p><code>Option</code> is implicitly convertible to an <code>Iterable</code> - but why does it not just just implement <code>Iterable</code> directly:</p>
  
  <pre><code>def iterator = new Iterator[A] {
    var end = !isDefined
    def next() = {
      val n = if (end) throw new NoSuchElementException() else get
      end = true
      n
    }
  
    def hasNext = !end
  }
  </code></pre>
  
  <p><strong>EDIT:</strong> <em>In fact it's even weider than that because in 2.8 <code>Option</code> does declare an <code>iterator</code> method</em>:</p>
  
  <pre><code>def iterator: Iterator[A] = 
    if (isEmpty) Iterator.empty else Iterator.single(this.get)
  </code></pre>