2 people like it.
    Like the snippet!
  
  Primes
  Generates the Prime Number Sequence.
   1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
  | 
open System
open System.Linq
let Primes =
  seq { 
        let PrimesSoFar = ref [2]
        let Primality =
          fun(primes : Int32 list, number) ->
            let IsComposite = primes.AsParallel().Any(fun x-> (number % x)=0)
            (not IsComposite , primes @ (if IsComposite then [] else [number;]))
        //  Generate the Prime Number Sequence
        yield 2
        for number in 3..2..Int32.MaxValue do
          let ( IsPrime, PrimeSeq ) =  Primality(!PrimesSoFar, number)
          if IsPrime then
            PrimesSoFar := PrimeSeq
            yield number
      }
// Example
//
// let PrimeSum = Prime.Take(1000).Sum()
  | 
namespace System
namespace System.Linq
val Primes : seq<int>
Full name: Script.Primes
Multiple items
val seq : sequence:seq<'T> -> seq<'T>
Full name: Microsoft.FSharp.Core.Operators.seq
--------------------
type seq<'T> = Collections.Generic.IEnumerable<'T>
Full name: Microsoft.FSharp.Collections.seq<_>
val PrimesSoFar : int list ref
Multiple items
val ref : value:'T -> 'T ref
Full name: Microsoft.FSharp.Core.Operators.ref
--------------------
type 'T ref = Ref<'T>
Full name: Microsoft.FSharp.Core.ref<_>
val Primality : (Int32 list * Int32 -> bool * Int32 list)
val primes : Int32 list
type Int32 =
  struct
    member CompareTo : value:obj -> int + 1 overload
    member Equals : obj:obj -> bool + 1 overload
    member GetHashCode : unit -> int
    member GetTypeCode : unit -> TypeCode
    member ToString : unit -> string + 3 overloads
    static val MaxValue : int
    static val MinValue : int
    static member Parse : s:string -> int + 3 overloads
    static member TryParse : s:string * result:int -> bool + 1 overload
  end
Full name: System.Int32
type 'T list = List<'T>
Full name: Microsoft.FSharp.Collections.list<_>
val number : Int32
val IsComposite : bool
(extension) Collections.IEnumerable.AsParallel() : ParallelQuery
(extension) Collections.Generic.IEnumerable.AsParallel<'TSource>() : ParallelQuery<'TSource>
val x : Int32
val not : value:bool -> bool
Full name: Microsoft.FSharp.Core.Operators.not
val number : int
field int.MaxValue = 2147483647
val IsPrime : bool
val PrimeSeq : Int32 list
  
  
  More information