!!! Overview
[{$pagename}], in computer science, the term is used more comprehensively to describe an operation that will produce the same results if executed once or multiple times.


This may have a different meaning depending on the context in which it is applied. In the case of [subroutine] calls with side effects, for instance, it means that the modified [state] remains the same after the first call. In [Functional Programming], though, an [{$pagename}] function is one that has the property f(f(x)) = f(x) for any value x


Simply put, an operation is [{$pagename}] if it produces the same result when called over and over. An identical [request] should return an identical [Response] when done twice, two thousand, or two million times. The source of most confusion around this concept comes with the idea of identical results, however. What we expect to see is identical results in the return form rather than in the return value.


!! [{$pagename}] in [Information Technology]
[{$pagename}], in [Information Technology], may have a different meaning depending on the [context] in which it is applied:
* in imperative programming, a subroutine with side effects is [{$pagename}] if the system [state] remains the same after one or several calls, in other words if the [function] from the system [state] space to itself associated to the subroutine is [{$pagename}] in the mathematical sense given in the definition;
* in [Functional Programming], a pure function is [{$pagename}] if it is [{$pagename}] in the mathematical sense given in the definition.
This is a very useful property in many situations, as it means that an operation can be repeated or retried as often as necessary without causing unintended effects. With non-idempotent operations, the [algorithm] may have to keep track of whether the operation was already performed or not.

!! [{$pagename}] [Examples]
A [function] looking up a customer's name and address in a database is typically [{$pagename}], since this will not cause the [database] to change. \\
Similarly, changing a customer's address is typically [{$pagename}], because the final address will be the same no matter how many times it is submitted. 


However, placing an order for a car for the customer is typically not [{$pagename}], since running the call several times will lead to several orders being placed.\\ 
Canceling an order is [{$pagename}], because the order remains canceled no matter how many requests are made.

!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]
----
* [#1] - [Idempotence|Wikipedia:Idempotence#Computer_science_meaning/|target='_blank'] - based on information obtained 2016-05-21- 
* [#2] - [Understanding Idempotency and Safety in API Design|https://nordicapis.com/understanding-idempotency-and-safety-in-api-design/|target='_blank'] - based on information obtained 2020-01-22