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 paraList
s yOption
s. Me gustaría usarlo conEither
s, 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?