Is every pure function idempotent?
I wouldn't ask such a crazy question if I hadn't seen this statement in the official Angular.js tutorial:
The filter function should be a pure function, which means that it should be stateless and idempotent. Angular relies on these properties and executes the filter only when the inputs to the function change.
This seems to imply that a pure function should be both stateless and idempotent, which does not match what I think is the common definition of a pure function.
In fact, it does not even match the example below in the page, where reversing the characters in a string is presented an example of a filter: clearly, reversing a string changes the string in a way that it changes again if the string is reversed once more.
Even more curious: if you look at the Wikipedia page for pure function linked in that tutorial (I can only post one link because I'm a new user, sorry...): it reports sin(x) as an example of a pure function.
So, according to Angular.js, the sine is an idempotence, right?
What am I missing?