nessos/Streams

ParStream.filter followed by ParStream.mapi gives incorrect results when iterated

Closed this issue · 0 comments

dsyme commented

I believe ParStream.iter needs to check for if stream.PreserveOrdering then...

Repro:

ParStream.ofArray [| 101 .. 201 |] 
  |> ParStream.filter (fun x -> x % 2 = 0) 
  |> ParStream.mapi (fun i x -> (i,x)) 
  |> ParStream.iter (printfn "%A")

gives

(25, 126)
(1, 102)
(51, 152)
(3, 104)
(27, 128)
(53, 154)
(5, 106)
(29, 130)
(31, 132)
(7, 108)
(55, 156)
(33, 134)
(9, 110)
(57, 158)
(35, 136)
(11, 112)
(59, 160)
(37, 138)
(13, 114)
(15, 116)
(39, 140)
(61, 162)
(17, 118)
(41, 142)
(63, 164)
(19, 120)
(43, 144)
(65, 166)
(21, 122)
(45, 146)
(23, 124)
(47, 148)
(67, 168)
(75, 176)
(49, 150)
(69, 170)
(77, 178)
(71, 172)
(79, 180)
(73, 174)
(81, 182)
(83, 184)
(85, 186)
(87, 188)
(89, 190)
(91, 192)
(93, 194)
(95, 196)
(97, 198)
(99, 200)