Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.64 KB | None | 0 0
  1. (* Async workflows sample (parallel CPU and I/O tasks) *)
  2.  
  3. (* A very naive prime number detector *)
  4. let isPrime (n:int) =
  5.    let bound = int (System.Math.Sqrt(float n))
  6.    seq {2 .. bound} |> Seq.exists (fun x -> n % x = 0) |> not
  7.  
  8. (* We are using async workflows *)
  9. let primeAsync n =
  10.     async { return (n, isPrime n) }
  11.  
  12. (* Return primes between m and n using multiple threads *)  
  13. let primes m n =
  14.     seq {m .. n}
  15.         |> Seq.map primeAsync
  16.         |> Async.Parallel
  17.         |> Async.RunSynchronously
  18.         |> Array.filter snd
  19.         |> Array.map fst
  20.  
  21. (* Run a test *)
  22. primes 1000000 1002000
  23.     |> Array.iter (printfn "%d")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement