Usando Eithers con la sintaxis de Scala para

Como lo entiendo, la sintaxis de Scala "para" es extremadamente similar a la sintaxis de "hacer" de Haskell. En Scala, la sintaxis "para" se usa a menudo paraLists yOptions. Me gustaría usarlo conEithers, pero los métodos necesarios no están presentes en las importaciones predeterminadas.

for {
  foo <- Right(1)
  bar <- Left("nope")
} yield (foo + bar)

// expected result: Left("nope")
// instead I get "error: value flatMap is not a member..."

¿Esta funcionalidad está disponible a través de alguna importación?

Hay un ligero enganche:

for {
  foo <- Right(1)
  if foo > 3
} yield foo
// expected result: Left(???)

Para una lista, seríaList(). porOption, podría serNone. ¿Las bibliotecas estándar de Scala proporcionan una solución a esto? (O quizásscalaz?) ¿Cómo? Supongamos que quisiera proporcionar mi propia "instancia de mónada" para cualquiera de las dos, ¿cómo podría hacer eso?

Respuestas a la pregunta(3)

Su respuesta a la pregunta