Haskell is sequencenot as general as it could be, or as general as Scalaz (and I assume that you agree with Scalaz's decision, as you mention sequence).
Scalaz sequence ( Haskell sequenceA in Data.Traversable) , Traverse - . Option Traverse, sequence :
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
import scalaz._, Scalaz._
def collapse(x: Option[Future[Option[Int]]]): Future[Option[Int]] =
x.sequence.map(_.flatten)
Scalaz orZero Option, x.orZero, Future[Option[Int]] Future(None).
, , x.getOrElse(Future.successful(None)), (, ) , , , , Scalaz.