鉴于此 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
我的问题是如何在 Clojure 中将此地图/平面地图转换为理解?
假设:
- 如果可能的话,我想使用惯用的 Clojure(即
mapcat
)来表示这个而不是algo.monads
/fluokitten
库。但是,如果这是最好的方法(我愿意学习),那就使用它。