Używanie Eithers ze składnią Scala „for”

Jak rozumiem, składnia Scala „for” jest bardzo podobna do składni monadycznej „do” Haskella. W Scali często używana jest składnia „for”Lists iOptions. Chciałbym go używaćEithers, ale niezbędne metody nie są obecne w domyślnych importach.

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

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

Czy ta funkcja jest dostępna za pośrednictwem importu?

Jest lekki problem:

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

Dla listy byłobyList(). DlaOption, to byłbyNone. Czy standardowe biblioteki Scala stanowią rozwiązanie tego problemu? (A możescalaz?) W jaki sposób? Przypuśćmy, że chciałbym przedstawić moją własną „instancję monad” dla każdej z nich. Jak mogłem to zrobić?

questionAnswers(3)

yourAnswerToTheQuestion