Verwenden von Eithers mit der Scala-For-Syntax
Wie ich es verstehe, ist die Scala "for" -Syntax der monadischen "do" -Syntax von Haskell sehr ähnlich. In Scala wird häufig die Syntax "für" verwendetList
s undOption
s. Ich würde es gerne mit verwendenEither
s, aber die erforderlichen Methoden sind in den Standardimporten nicht vorhanden.
for {
foo <- Right(1)
bar <- Left("nope")
} yield (foo + bar)
// expected result: Left("nope")
// instead I get "error: value flatMap is not a member..."
Ist diese Funktionalität über einen Import verfügbar?
Es gibt ein kleines Problem:
for {
foo <- Right(1)
if foo > 3
} yield foo
// expected result: Left(???)
Für eine Liste wäre esList()
. ZumOption
, es wäreNone
. Bieten die Scala-Standardbibliotheken eine Lösung dafür? (Oder vielleichtscalaz
?) Wie? Angenommen, ich wollte entweder meine eigene "Monadeninstanz" bereitstellen, wie könnte ich das tun?