Sto cercando un modo per eseguire due calcoli in parallelo nella ST-Monad. Sto costruendo un array piuttosto grande (usando STUArray) e mi piacerebbe farlo in parallelo.Una mappa monad parallela in Haskell? Qualcosa come parMapM?
Finora ho trovato this e this Q & Una qui su StackOverflow, tuttavia il primo non si applica nel mio caso, come si tratta di codice puro solo e la seconda riguarda la monade IO - ma sono in una discussione di stato.
Ho anche trovato il pacchetto monad-parallel, ma mi richiede di avere un'istanza di 'MonadParallel' per ST. Anche il pacchetto monad-par supporta solo calcoli puri o la monade IO.
C'è un modo per eseguire un calcolo monadico parallelo all'interno di ST?
Costruire una grande matrice in parallelo suona come qualcosa di meglio fatto in puro codice piuttosto che ST. Non credo che potresti dare qualche informazione in più su cosa vuoi mettere in ogni cella e perché vuoi usare ST? Potrebbero esserci dei problemi, ad esempio se si eseguono azioni separate nella monade ST per ogni cella, allora questo non può davvero essere reso parallelo facilmente come (a differenza di IO) ST in realtà non fornisce le primitive per la comunicazione tra i thread. – DarkOtter