Comment by StavrosK
7 years ago
Yes, in mathematics, not programming. And a function that doubles a number isn't idempotent even by that definition.
7 years ago
Yes, in mathematics, not programming. And a function that doubles a number isn't idempotent even by that definition.
Of course a doubling function is not idempotent!
I think the confusion arises because side-effectful functions can be considered as having type
and so for a garage door toggle you have something like
where the new state is the old one with the door opened/closed as appropriate.
Now the idempotence condition becomes:
but clearly
so this is where the notion comes from. If you abuse notation and just say a function of no arguments can be idempotent then you'll get confusion like this.
But `GET(GET(x))` doesn't make sense, in general (and if it did, then you would not expect it to be idempotent), so clearly idempotency in this context is meant to mean side-effect free. They should probably just say side-effect free, though, to avoid the confusion.
It's possible to be idempotent without being side-effect free. If you PUT some record, for example, then that operation _will_ have side effects (modifying the record). If you then PUT that same data again, the result will be the same (it's idempotent).
3 replies →