Ich möchte das erste übereinstimmende Element in einer unendlichen Liste in Haskell finden.Unendliche Liste parallel Filter in Haskell
Dieser Code arbeitet:
findPassword passwordHash = (head . filter (checkPassword passwordHash)) allStrings
check wirklich lang ist
checkPassword hash string = (sha1 string) == hash
allStrings ist (weil es ein SHA1-Hash ist) nur die Liste aller möglichen Zeichenketten:
allStrings = [ c : s | s <- "" : allStrings, c <- ['a'..'z'] ++ ['0'..'9'] ]
Ich möchte, dass dieser Code parallel ausgeführt wird, aber wenn ich Filter durch parFilter ersetzen:
import qualified Control.Parallel.Strategies as S
parFilter p = S.withStrategy (S.evalBuffer 1000 S.rseq) . filter p
Es funktioniert nicht ... Haben Sie eine Idee? Dieser Code verwendet auch viel Speicher, aber es ist ein anderes Problem. Das vollständige Skript finden Sie hier https://github.com/ThibaudDauce/habreaker
Wie wissen Sie, es doesn arbeitest du nicht? – Gurkenglas
es läuft einfach für immer und essen alle meine RAM und alle meine Prozessor –