assert (b.Top = 3)
let c : Stack<Bar> = (Empty.Push <| Bar ()).Push <| Bar ()
- printfn "%A" <|
- match c.Top with
- | :? Bar -> true
- | _ -> false
+ c.Top :> Bar |> ignore
+ c.Top :> Foo |> ignore
let d : Stack<#Foo> = (Empty.Push <| Bar ()).Push <| Bar ()
- printfn "%A" <|
- match d.Top with
- | :? Bar -> true
- | _ -> false
+ d.Top :> Bar |> ignore
// Question 4.
let question4 () =
- let rec primesSieve sequence =
+ let rec sieve sequence =
seq {
let h = Seq.head sequence
yield h
- yield! primesSieve <| Seq.filter (fun m -> m % h <> 0) sequence
+ yield! sieve <| Seq.filter (fun m -> m % h <> 0) sequence
}
- let primes = primesSieve <| (Seq.initInfinite id |> Seq.skip 2)
+ let primes = sieve <| (Seq.initInfinite id |> Seq.skip 2)
printfn "first primes: %A" <| (Seq.take 100 primes |> Seq.toList)
[<EntryPoint>]