-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Closed
Description
Environment
- Elixir version:
$ elixir -v
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Elixir 1.3.0
- Operating system:
Mac OSX 10.11
Current behavior
iex> Enum.take(1..3, 3) |> Enum.find_index(fn _ -> false end)
nil # good
iex> Stream.take(1..3, 3) |> Enum.find_index(fn _ -> false end)
3 # this seems like a bug, should be nil
iex> Stream.take(1..3, 4) |> Enum.find_index(fn _ -> false end)
nil # if stream take more than the original list, it works fine
iex> Stream.take_while(1..3, &(&1 <= 3)) |> Enum.find_index(fn _ -> false end)
nil # good
iex> Stream.take_while(1..3, &(&1 <= 2)) |> Enum.find_index(fn _ -> false end)
2 # shoud be nil
iex> Stream.take_every(1..3, 1) |> Enum.find_index(fn _ -> false end)
nil # good
Expected behavior
iex> Stream.take(1..3, 3) |> Enum.find_index(fn _ -> false end)
nil
iex> Stream.take_while(1..3, &(&1 <= 2)) |> Enum.find_index(fn _ -> false end)
nil