3
는 this Scala code을 감안할 때 : 다음 이해력이 변환됩니다이지도/flatMap을 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
내 질문은 방법 Clojure의에서 이해의에이지도/flatMap을 변환하는 것입니다?
가정 :
- 내가 관용적 Clojure의을 사용하고 싶습니다 가능하면 (즉
mapcat
)는algo.monads
/fluokitten
라이브러리 대신이를 나타냅니다. 그러나 이것이 그것을하기위한 최선의 방법이라면 (나는 배우기에 열심이다) 그런 다음 그것을 사용하십시오.
확인을 - 그래서 우리는'Option'을 사용하고 싶다면 - 우리가 ' 다시 'algo.monads' http://onclojure.com/2009/03/05/a-monad-tutorial-for-clojure-programmers-part-1/ - 그게 맞습니까? – hawkeye
@hawkeye,'for'를 사용하려면 시퀀스로 포장 된 객체를 가져야합니다. 그렇지 않다면 'algo.monads' (또는 자신 만의 롤)를 사용해야 할 것입니다. – ponzao
좋아 - 당신은 이해력이 기본적으로 let-block이있는 루프를 맨 위에서 말하고있는 것입니까? – hawkeye