Pola yang saya temui beberapa kali sekarang adalah pola di mana daftar nilai perlu diperiksa dengan memetakan beberapa tes di atasnya dan melihat apakah ada atau semua elemen lulus. Solusi khasnya adalah hanya menggunakan built-in all
dan nyaman any
.
Masalahnya adalah ini mengevaluasi secara serial. Dalam banyak kasus akan jauh lebih cepat untuk mengevaluasi secara paralel dengan proses yang selesai setelah setiap thread menemukan "Salah" untuk all
atau "Benar" untuk any
. Saya cukup yakin bahwa perilaku hubungan arus pendek tidak dapat diimplementasikan menggunakan Control.Paralel karena memerlukan komunikasi antar-proses dan saya tidak mengerti cukup dekat dengan Control.Concurrent untuk mengimplementasikan ini.
Ini adalah pola yang cukup umum dalam matematika (misalnya Miller-Rabin Primality) jadi saya merasa seperti seseorang mungkin telah menemukan solusi untuk ini, tetapi untuk alasan yang jelas melakukan pencarian google untuk "parallel atau / dan / any / all / all pada daftar haskell "tidak menghasilkan banyak hasil yang relevan.
unamb
perpustakaan
pthreads
dalam C atau utas hijau di Haskell) Anda tidak memulai beberapa webservers untuk menangani permintaan web secara bersamaan, alih-alih Anda menjalankan banyak utas dalam satu proses tunggal! Hal yang sama berlaku untuk paralelisme. Anda memutar utas sebanyak yang Anda miliki pada CPU dan membagi pekerjaan Anda secara merata, sehingga menangani tugas yang terikat CPU. Coba perpustakaan ini untuk meyakinkan diri sendiri github.com/lehins/haskell-scheduler