Kendall Clark <kclark@...>:
> On Fri, Apr 26, 2002 at 02:48:17PM -0700, Terrel Shumway wrote:
> > On Fri, 2002-04-26 at 09:39, Kendall Clark wrote:
> > DELETE is idempotent (once it is gone, it is gone), but charging a
> > credit card is not.
> Yeah, it really is.
I guess this would depend on how you translate an "operation" to a
"function" (which is what "idempotent" describes). IMO the most useful
definition here would be as a function from one state to another, so
that applying the same operation repeatedly will have the same effect
as applying it once. (Not a perfect analogy to the function stuff,
since this would really entail that no change was possible I guess ;)
Anyway, charging a credit card repeatedly is not the same as deleting
a file repeatedly. After the first deletion, no more change will occur
by reapplying the operation. The same can hardly be said about the
credit card stuff.
> Each GET has the same effect: to charge the same amount
> on a credit card.
Sure... And each call to the function sin() has the same effect --
calculating the sine of a number. But sin(3) and sin(sin(3)) are not
equal, and thus sin() is not idempotent.
> That over the course of N GETs the *total* charge is N *
> amount is no different than that, over the course of N GETs, a hit counter
> is incremented N times.
> > Thank you, Kendall, for helping me to clarify this in my mind.
> > Idempotence is not the issue, safety is.
> They are both issues, but, yes, GET and DELETE are both supposed to be
> idempotent, but GET is supposed to be safe, too.
I'm not sure the term idempotent is very useful here, since it seems
to be used in two different ways (and since it's really only valid for
functions, or operators).
> And yr welcome.
Magnus Lie Hetland The Anygui Project