0
scalaz에서 메모에 관한 경우는, 그러나, 여기에 내가 pure
을 유지 할 수없는 느낀다 상황이다.기능 프로그래밍 디자인 : 나는 잠시 동안 scalaz에서 <code>Memo</code>을 사용하고
def compute(a: Int, b: Int): Int = {a+b} //an expensive computation
val cache = Memo.immutableHashMapMemo[(Int, Int), Int]{
case ((a,b)) => compute(a,b)
}
이제 s1
및 s2
이 모두 Set[(Int, Int)]
입니다. 예 : s1 = Set((1,1), (1,2))
및 s2 = Set((1,2), (1,3))
. 각 목록은 병렬로 실행되어야한다 :
def computePar(s: Set[(Int, Int)]): Set[Int] = //using compute() in parallel
그래서 문제는 내가 만 입력 목록에서 결과 목록을 얻을 수 있습니다 때마다입니다. 제
Memo
은
Map[(Int, Int), Int]
이어야합니다.
s2
의 첫 번째 요소는
s1
에서
compute(1,2)
을 다시 사용할 수 있기 때문입니다. 변경 가능한지도를 사용하면 문제가 해결됩니다. FP 솔루션이 있는지 궁금합니다. 나는 그것이
Kleisli
또는 이와 유사한 것일 수 있다고 생각합니다.