3
Учитывая this Scala code:Как преобразовать эту карту/карту карты в понимание в Clojure?
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
библиотек. Но если это лучший способ сделать это (я открыт для обучения), то используйте это.
Ok - так что, если мы хотим использовать 'Option' - тогда мы» вернитесь к 'algo.monads' http://onclojure.com/2009/03/05/a-monad-tutorial-for-clojure-programmers-part-1/ - это правильно? – hawkeye
@hawkeye, чтобы использовать 'for', вам нужно, чтобы объекты были обернуты в последовательности, если это не нормально, вам, вероятно, придется использовать' algo.monads' (или сворачивать свои собственные). – ponzao
Хорошо, вы говорите, что для понимания в основном цикл for с блоком let-block в верхней части? – hawkeye