Streams and function bewilderment

I've been playing around with Elixir. The introduction is pretty comprehensive but I did encounter a spot of confusion about when parentheses are actually necessary when calling a function.

First I created a simple little module like so:

defmodule Prime do
    defp divides(d,n) do
        rem(d,n) == 0
    end

    defp factors(n) do
        Enum.filter(1..n, &(divides(n, &1)))
    end

    def prime(n) do
        length(factors(n)) == 2
    end
end

This works fine and dandy, allowing me to discover whether a given integer is a prime or not.

I then began to apply it using the Enum module to get some lists of prime numbers. First I wanted to discover the first few prime numbers.

Enum.map(1..20, &Prime.prime/1)

This took me a little while to figure out - not used to having to specify the arity of the function when using it as an argument! Also, so easy to forget that crucial initial '&'!

Anyway, after I figured that out I moved on to the following

stream = 1..200 |>
    Stream.filter &(Prime.prime &1) |>
    Stream.drop 25
Enum.to_list stream

This didn't go quite as expected. I wanted the 26th prime and up, but what I got was:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, ...]

which wasn't right at all. Apparently I should have done this instead:

stream = 1..200 |>
    Stream.filter(&(Prime.prime &1)) |>
    Stream.drop 25
Enum.to_list stream

However I am still unsure exactly what happened in the first case! Regardless, I think the lesson I learnt there was that I should probably always use parentheses in function calls, just so I don't fall into a trap like this again.