Учитывая этот код Scala :
def compute2(maybeFoo: Option[Foo]): Option[Int] =
maybeFoo.flatMap { foo =>
foo.bar.flatMap { bar =>
bar.baz.map { baz =>
baz.compute
}
}
}
Который затем переводится на это для понимания:
def compute2(maybeFoo: Option[Foo]): Option[Int] =
for {
foo <- maybeFoo
bar <- foo.bar
baz <- bar.baz
} yield baz.compute
Мой вопрос: Как преобразовать эту карту/flatMap в для понимания в Clojure?
Предположения:
- Если возможно, я бы хотел использовать идиоматический Clojure (т.е.
mapcat
) для представления этого, а не библиотекиalgo.monads
/fluokitten
. Но если это лучший способ сделать это (я открыт для обучения), тогда используйте его.