title: Scala Option with fold operation
body: <p>I am trying to use <code>fold</code> or <code>map</code> operation instead of <code>match</code> for <code>Option</code>.</p>
  
  <p>I have a Option <code>val ao: Option[String] = xxxx</code> and a function <code>f: (String =&gt; Future[Option[T]])</code></p>
  
  <p>If I do pattern matching is:</p>
  
  <pre><code>ao match {
    case Some(t) =&gt; f(t)
    case None =&gt; Future.successful(None)
  }
  </code></pre>
  
  <p>if I do map is:</p>
  
  <pre><code>ao map f getOrElse Future.successful(None)
  </code></pre>
  
  <p>But when I do fold, I got some following compiler errors:</p>
  
  <pre><code>ao.fold(Future.successful(None))(t =&gt; f(t))
  </code></pre>
  
  <p>about complaining <code>expression Future[Option[T]] doesn't confirm to Future[None.type]</code></p>
  
  <p>So why map works here but fold not, did I miss something here?</p>