ST-Monad에서 두 개의 계산을 병렬로 실행하는 방법을 찾고 있습니다. STUArray를 사용하여 다소 큰 배열을 만들고 있는데 병렬로 처리하고 싶습니다. 그것은 순수한 코드와 IO 모나드와 두 번째 거래를 다루는으로하스켈의 병렬 모나드지도? parMapM과 같은 것?
지금까지 내가 찾은 this 및 this Q & A는 여기에 유래에, 그러나 첫 번째는, 내 경우에는 적용되지 않습니다 -하지만 난에서 오전 국가 스레드.
또한 monad-parallel 패키지를 찾았지만, ST에 대해서는 'MonadParallel'의 인스턴스가 있어야합니다. 또한 monad-par 패키지는 순수한 연산 또는 IO 모나드 만 지원합니다.
ST 내부에서 병렬 모나드 계산을 수행 할 수있는 방법이 있습니까?
병렬로 큰 배열을 작성하는 것이 ST가 아닌 순수한 코드에서 가장 잘 수행되는 것처럼 들립니다. 각 셀에 넣으려는 항목과 ST를 사용하려는 이유에 대한 정보를 조금 더 제공 할 수 있다고 생각하지 않습니까? 문제가 생길 수 있습니다. 예를 들어, 각 셀에 대한 ST 모나드에서 별도의 동작을 실행하는 경우 IO가 IO와 달리 병렬로 만들어지지 않을 수 있습니다. ST는 실제로 스레드 간의 통신을위한 프리미티브를 제공하지 않습니다. – DarkOtter