Converting a tuple of options to an option of tuple with Scalaz or Shapeless
Having (Some(1), Some(2)) I expect to get Some((1, 2)) and having (Some(1), None) I expect to get None You can use the fact that Scalaz 7 provides a Bitraverse instance for tuples and then sequence as usual (but with bisequence instead of sequence ): scala> import scalaz._, std.option._, std.tuple._, syntax.bitraverse._ import scalaz._ import std.option._ import std.tuple._ import syntax.bitraverse._ scala> val p: (Option[Int], Option[String]) = (Some(1), Some("a")) p: (Option[Int], Option[String]) = (Some(1),Some(a)) scala> p.bisequence[Option, Int, String] res0: Option[(Int, String)] = Some(