Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* Async workflows sample (parallel CPU and I/O tasks) *)
- (* A very naive prime number detector *)
- let isPrime (n:int) =
- let bound = int (System.Math.Sqrt(float n))
- seq {2 .. bound} |> Seq.exists (fun x -> n % x = 0) |> not
- (* We are using async workflows *)
- let primeAsync n =
- async { return (n, isPrime n) }
- (* Return primes between m and n using multiple threads *)
- let primes m n =
- seq {m .. n}
- |> Seq.map primeAsync
- |> Async.Parallel
- |> Async.RunSynchronously
- |> Array.filter snd
- |> Array.map fst
- (* Run a test *)
- primes 1000000 1002000
- |> Array.iter (printfn "%d")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement