What is a term for a function that when called repeatedly, has the same effect as calling once?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
(Assuming a single-threaded environment)
A function that fulfills this criterion is:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
In essence, I can call this function multiple times and not worry about it initializing MyClass
multiple times
A function that does not fulfill this criterion might be:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Calling initialize()
multiple times will cause a memory leak
Motivation
It would be nice to have a single concise word to describe this behavior so that functions that are expected to meet this criterion can be duly commented (especially useful when describing interface functions that are expected to be overridden)
naming functions
|
show 16 more comments
(Assuming a single-threaded environment)
A function that fulfills this criterion is:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
In essence, I can call this function multiple times and not worry about it initializing MyClass
multiple times
A function that does not fulfill this criterion might be:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Calling initialize()
multiple times will cause a memory leak
Motivation
It would be nice to have a single concise word to describe this behavior so that functions that are expected to meet this criterion can be duly commented (especially useful when describing interface functions that are expected to be overridden)
naming functions
67
To the close voter(s): while it is true that 99.999% (rough estimate) of all "name-that-thing" questions are off-topic because they don't have a single, correct, unambiguous, objective answer and the naming is purely subjective and opinion-based, this one does have a single, correct, unambiguous, objective answer, which was given by the OP himself.
– Jörg W Mittag
Mar 4 at 8:38
30
Calling it multiple times does have an effect, as there could be other code that changed 'var' in between.
– RemcoGerlich
Mar 4 at 9:50
7
Why was this question asked, if the OP knew the answer at the time of asking? Is there any reason other than rep/points/karma building?
– dotancohen
Mar 4 at 16:29
12
@dotancohen Q/A style self-answering is one of the key concepts on StackExchange.
– glglgl
Mar 4 at 16:31
17
@glglgl: I agree, for questions with merit. What merit has this question? I'm seriously concerned that we'll start getting every CS 101 question asked and immediately answered by the OP, every single CS term asked and immediately defined by the OP, and every basic algorithm's pros and cons questioned then immediately answered by the OP (not necessarily this OP). Is that the site that we want softwareengineering.SE to be?
– dotancohen
Mar 4 at 16:37
|
show 16 more comments
(Assuming a single-threaded environment)
A function that fulfills this criterion is:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
In essence, I can call this function multiple times and not worry about it initializing MyClass
multiple times
A function that does not fulfill this criterion might be:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Calling initialize()
multiple times will cause a memory leak
Motivation
It would be nice to have a single concise word to describe this behavior so that functions that are expected to meet this criterion can be duly commented (especially useful when describing interface functions that are expected to be overridden)
naming functions
(Assuming a single-threaded environment)
A function that fulfills this criterion is:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
In essence, I can call this function multiple times and not worry about it initializing MyClass
multiple times
A function that does not fulfill this criterion might be:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Calling initialize()
multiple times will cause a memory leak
Motivation
It would be nice to have a single concise word to describe this behavior so that functions that are expected to meet this criterion can be duly commented (especially useful when describing interface functions that are expected to be overridden)
naming functions
naming functions
edited Mar 6 at 12:48
doubleYou
2,0941520
2,0941520
asked Mar 4 at 3:43
WoofasWoofas
1,134259
1,134259
67
To the close voter(s): while it is true that 99.999% (rough estimate) of all "name-that-thing" questions are off-topic because they don't have a single, correct, unambiguous, objective answer and the naming is purely subjective and opinion-based, this one does have a single, correct, unambiguous, objective answer, which was given by the OP himself.
– Jörg W Mittag
Mar 4 at 8:38
30
Calling it multiple times does have an effect, as there could be other code that changed 'var' in between.
– RemcoGerlich
Mar 4 at 9:50
7
Why was this question asked, if the OP knew the answer at the time of asking? Is there any reason other than rep/points/karma building?
– dotancohen
Mar 4 at 16:29
12
@dotancohen Q/A style self-answering is one of the key concepts on StackExchange.
– glglgl
Mar 4 at 16:31
17
@glglgl: I agree, for questions with merit. What merit has this question? I'm seriously concerned that we'll start getting every CS 101 question asked and immediately answered by the OP, every single CS term asked and immediately defined by the OP, and every basic algorithm's pros and cons questioned then immediately answered by the OP (not necessarily this OP). Is that the site that we want softwareengineering.SE to be?
– dotancohen
Mar 4 at 16:37
|
show 16 more comments
67
To the close voter(s): while it is true that 99.999% (rough estimate) of all "name-that-thing" questions are off-topic because they don't have a single, correct, unambiguous, objective answer and the naming is purely subjective and opinion-based, this one does have a single, correct, unambiguous, objective answer, which was given by the OP himself.
– Jörg W Mittag
Mar 4 at 8:38
30
Calling it multiple times does have an effect, as there could be other code that changed 'var' in between.
– RemcoGerlich
Mar 4 at 9:50
7
Why was this question asked, if the OP knew the answer at the time of asking? Is there any reason other than rep/points/karma building?
– dotancohen
Mar 4 at 16:29
12
@dotancohen Q/A style self-answering is one of the key concepts on StackExchange.
– glglgl
Mar 4 at 16:31
17
@glglgl: I agree, for questions with merit. What merit has this question? I'm seriously concerned that we'll start getting every CS 101 question asked and immediately answered by the OP, every single CS term asked and immediately defined by the OP, and every basic algorithm's pros and cons questioned then immediately answered by the OP (not necessarily this OP). Is that the site that we want softwareengineering.SE to be?
– dotancohen
Mar 4 at 16:37
67
67
To the close voter(s): while it is true that 99.999% (rough estimate) of all "name-that-thing" questions are off-topic because they don't have a single, correct, unambiguous, objective answer and the naming is purely subjective and opinion-based, this one does have a single, correct, unambiguous, objective answer, which was given by the OP himself.
– Jörg W Mittag
Mar 4 at 8:38
To the close voter(s): while it is true that 99.999% (rough estimate) of all "name-that-thing" questions are off-topic because they don't have a single, correct, unambiguous, objective answer and the naming is purely subjective and opinion-based, this one does have a single, correct, unambiguous, objective answer, which was given by the OP himself.
– Jörg W Mittag
Mar 4 at 8:38
30
30
Calling it multiple times does have an effect, as there could be other code that changed 'var' in between.
– RemcoGerlich
Mar 4 at 9:50
Calling it multiple times does have an effect, as there could be other code that changed 'var' in between.
– RemcoGerlich
Mar 4 at 9:50
7
7
Why was this question asked, if the OP knew the answer at the time of asking? Is there any reason other than rep/points/karma building?
– dotancohen
Mar 4 at 16:29
Why was this question asked, if the OP knew the answer at the time of asking? Is there any reason other than rep/points/karma building?
– dotancohen
Mar 4 at 16:29
12
12
@dotancohen Q/A style self-answering is one of the key concepts on StackExchange.
– glglgl
Mar 4 at 16:31
@dotancohen Q/A style self-answering is one of the key concepts on StackExchange.
– glglgl
Mar 4 at 16:31
17
17
@glglgl: I agree, for questions with merit. What merit has this question? I'm seriously concerned that we'll start getting every CS 101 question asked and immediately answered by the OP, every single CS term asked and immediately defined by the OP, and every basic algorithm's pros and cons questioned then immediately answered by the OP (not necessarily this OP). Is that the site that we want softwareengineering.SE to be?
– dotancohen
Mar 4 at 16:37
@glglgl: I agree, for questions with merit. What merit has this question? I'm seriously concerned that we'll start getting every CS 101 question asked and immediately answered by the OP, every single CS term asked and immediately defined by the OP, and every basic algorithm's pros and cons questioned then immediately answered by the OP (not necessarily this OP). Is that the site that we want softwareengineering.SE to be?
– dotancohen
Mar 4 at 16:37
|
show 16 more comments
6 Answers
6
active
oldest
votes
This type of function / operation is called Idempotent
Idempotence (UK: /ˌɪdɛmˈpoʊtəns/,[1] US: /ˌaɪdəm-/)[2] is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.
In mathematics, this means that if f is idempotent, f(f(x)) = f(x), which is the same as saying f∘f = f.
In computer science, this means that if f(x);
is idempotent, f(x);
is the same as f(x); f(x);
.
Note: These meanings seem different, but under the denotational semantics of state, the word "idempotent" actually has the same exact meaning in both mathematics and computer science.
Comments are not for extended discussion; this conversation has been moved to chat.
– maple_shaft♦
Mar 7 at 15:23
add a comment |
The precise term for this (as Woofas mentions) is idempotence. I wanted to add that while you could call your func1
method idempotent, you could not call it a pure function. The properties of a pure function are two: it must be idempotent and it must not have side effects, which is to say, no mutation of local static variables, non-local variables, mutable reference arguments or I/O streams.
The reason I mention this is that a idempotent function with side effects is not good either, since technically idempotent refers to the return output of the function, and not to the side effects. So technically your func2
method is idempotent, as the output doesn't change according to the input.
You most likely want to specify that you want a pure function. An example of a pure function might be as follows:
int func1(int var)
{
return var + 1;
}
More reading can be found in the Wikipedia article "Pure function".
37
I think your definition of idempotency is too narrow, or put another way, you are using the mathematical definition of idempotency, not the programming one. For example, thePUT
andDELETE
HTTP methods are called idempotent precisely because executing their side-effects multiple times has the same effect as executing them only once. You are saying "idempotency meansf∘f = f
", whereas in programming, we mean "executingf
has the same effect has executingf; f
". Note that you can easily transform the second meaning into the former by adding a "world" parameter.
– Jörg W Mittag
Mar 4 at 8:28
23
@Neil "Idempotency is strictly a mathematical term." No it isn't, its also used in networking and client server communication/distributed systems as well and is described as JörgWMittag describes it. Its a useful concept because it allows multiple requests to a server/client with the same operation/message with out changing what that original message set out to do. This is useful when you have unreliable communication, and you need to retry a command because either the clients message was dropped or the servers reply was.
– opa
Mar 4 at 14:39
7
You should go into more detail about the difference between pure and idempotent. Your example func1 is not idempotent becausefunc1(1) != func1(func1(1))
.
– Tezra
Mar 4 at 20:29
5
Purity and idempotence are different. A pure function doesn't have to be idempotent in mathematical sense (it is abviously idempotent in terms of side-effects, as it has none). Idempotent (in programming sense) function doesn't have to be pure, as in example given by OP. Also, as opa mentioned, idempotence is a useful property with a strictly different use than purity. Your definition of purity as "idempotent and with no side-effects" is wrong or at least misleading, downvoting.
– Frax
Mar 4 at 22:55
5
In the context of programming, there are no "side effects", but if you were to expand the definition to include this, then a idempotent function and a pure function would mean the same thing. No, they wouldn't mean the same thing at all. Idempotent, not pure:void f(int var) { someGlobalVariable = var; }
. Pure, not idempotent:int func1(int var) { return var + 1; }
.
– JLRishe
Mar 5 at 14:39
|
show 4 more comments
The Term is Idempotence. Note below that there is a distinct difference between an Idempotent function (Called recursively on itself; Second code block and the Mathematical definition), and functional idempotence (Called repeatedly with same input sequentially; First code block and often the term meant in Programming).
A function f with side effects is said to be idempotent under sequential composition f; f if, when called twice with the same list of arguments, the second call has no side effects and returns the same value as the first call[citation needed] (assuming no other procedures were called between the end of the first call and the start of the second call).
For instance, consider the following Python code:
x = 0
def setx(n):
global x
x = n
setx(5)
setx(5)
Here, setx is idempotent because the second call to setx (with the same argument) does not change the visible program state: x was already set to 5 in the first call, and is again set to 5 in the second call, thus keeping the same value. Note that this is distinct from idempotence under function composition f ∘ f. For example, the absolute value is idempotent under function composition:
def abs(n):
if n < 0:
return -n
else:
return n
abs(-5) == abs(abs(-5)) == abs(5) == 5
add a comment |
In physics I've heard this referred to as a projection:
a projection is a linear transformation P from a vector space to itself such that P2 = P. That is, whenever P is applied twice to any value, it gives the same result as if it were applied once (idempotent).
Graphically, this makes sense if you look at a cartoon of a vector projection:
In the picture, a1 is the projection of a on to b, which is like the first application of your function. Subsequent projections of a1 on to b give the same result a1. In other words, when you call a projection repeatedly, it has the same effect as calling it once.
Fair warning: I've never heard this used outside of physics, so unless you've got of those types on your team you might confuse everyone.
2
This is indeed a nice concrete example of how an idempotent function can be visualized (mathematically, and especially in the vector geometry / linear algebra field). While software function's "idempotence" is a really close concept, I don't think developers / computer scientist often use the word "projection" in this context (a "projection function" in software engineering would rather refer to a function that take an object and returns a new object derived from it, or a property of that object, for instance)
– Pac0
Mar 4 at 22:47
2
@Pac0 Oh, ok. I work on the fringe between science and programming, and didn't realize the word was already overloaded. I can think of a few contrived examples at work where I would use this terminology, but I admittedly work with people that are willing to put up with science jargon on the daily :-)
– user1717828
Mar 5 at 1:21
add a comment |
It is a Deterministic algorithm because given the same input (in this case no input), it will always produce the same output.
In computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently.
SQL databases are interested in Deterministic functions.
A deterministic function always gives the same answer when it has the same inputs. Most built-in SQL functions in SQLite are deterministic. For example, the abs(X) function always returns the same answer as long as its input X is the same.
A function must be deterministic if it's used in calculating an index.
For instance, in SQLite, the following non-deterministic functions cannot be used in an index: random()
, changes()
, last_insert_rowid()
and sqlite3_version()
.
6
The asker'sfunc2
is deterministic (there are no random effects involved), but already declared as violating the property he is looking for.
– Draco18s
Mar 4 at 22:17
That the same result is produced by repetition is not the same as saying the same result is produced by nesting or chaining. Deterministic functions are important for caching results, more so than for indexing/hashing.
– mckenzm
Mar 5 at 5:59
add a comment |
In addition to the other answers, if there is a specific input to the functon that has this property, it is a fixed point, invariant point or fixpoint of the function. For example, 1 to any power is equal to 1, so (1ⁿ)ⁿ = 1ⁿ = 1.
The special case of a program that produces itself as output is a quine.
Quines are to software as Cantor sets are to math :-) . And of course quines are not idempotent -- they either fail when the output already exists or they "clobber" the previous result and write a new, albeit identical output.
– Carl Witthoft
Mar 6 at 15:17
add a comment |
protected by gnat Mar 5 at 6:07
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
This type of function / operation is called Idempotent
Idempotence (UK: /ˌɪdɛmˈpoʊtəns/,[1] US: /ˌaɪdəm-/)[2] is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.
In mathematics, this means that if f is idempotent, f(f(x)) = f(x), which is the same as saying f∘f = f.
In computer science, this means that if f(x);
is idempotent, f(x);
is the same as f(x); f(x);
.
Note: These meanings seem different, but under the denotational semantics of state, the word "idempotent" actually has the same exact meaning in both mathematics and computer science.
Comments are not for extended discussion; this conversation has been moved to chat.
– maple_shaft♦
Mar 7 at 15:23
add a comment |
This type of function / operation is called Idempotent
Idempotence (UK: /ˌɪdɛmˈpoʊtəns/,[1] US: /ˌaɪdəm-/)[2] is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.
In mathematics, this means that if f is idempotent, f(f(x)) = f(x), which is the same as saying f∘f = f.
In computer science, this means that if f(x);
is idempotent, f(x);
is the same as f(x); f(x);
.
Note: These meanings seem different, but under the denotational semantics of state, the word "idempotent" actually has the same exact meaning in both mathematics and computer science.
Comments are not for extended discussion; this conversation has been moved to chat.
– maple_shaft♦
Mar 7 at 15:23
add a comment |
This type of function / operation is called Idempotent
Idempotence (UK: /ˌɪdɛmˈpoʊtəns/,[1] US: /ˌaɪdəm-/)[2] is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.
In mathematics, this means that if f is idempotent, f(f(x)) = f(x), which is the same as saying f∘f = f.
In computer science, this means that if f(x);
is idempotent, f(x);
is the same as f(x); f(x);
.
Note: These meanings seem different, but under the denotational semantics of state, the word "idempotent" actually has the same exact meaning in both mathematics and computer science.
This type of function / operation is called Idempotent
Idempotence (UK: /ˌɪdɛmˈpoʊtəns/,[1] US: /ˌaɪdəm-/)[2] is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.
In mathematics, this means that if f is idempotent, f(f(x)) = f(x), which is the same as saying f∘f = f.
In computer science, this means that if f(x);
is idempotent, f(x);
is the same as f(x); f(x);
.
Note: These meanings seem different, but under the denotational semantics of state, the word "idempotent" actually has the same exact meaning in both mathematics and computer science.
edited Mar 6 at 12:49
Dietrich Epp
1135
1135
answered Mar 4 at 3:43
WoofasWoofas
1,134259
1,134259
Comments are not for extended discussion; this conversation has been moved to chat.
– maple_shaft♦
Mar 7 at 15:23
add a comment |
Comments are not for extended discussion; this conversation has been moved to chat.
– maple_shaft♦
Mar 7 at 15:23
Comments are not for extended discussion; this conversation has been moved to chat.
– maple_shaft♦
Mar 7 at 15:23
Comments are not for extended discussion; this conversation has been moved to chat.
– maple_shaft♦
Mar 7 at 15:23
add a comment |
The precise term for this (as Woofas mentions) is idempotence. I wanted to add that while you could call your func1
method idempotent, you could not call it a pure function. The properties of a pure function are two: it must be idempotent and it must not have side effects, which is to say, no mutation of local static variables, non-local variables, mutable reference arguments or I/O streams.
The reason I mention this is that a idempotent function with side effects is not good either, since technically idempotent refers to the return output of the function, and not to the side effects. So technically your func2
method is idempotent, as the output doesn't change according to the input.
You most likely want to specify that you want a pure function. An example of a pure function might be as follows:
int func1(int var)
{
return var + 1;
}
More reading can be found in the Wikipedia article "Pure function".
37
I think your definition of idempotency is too narrow, or put another way, you are using the mathematical definition of idempotency, not the programming one. For example, thePUT
andDELETE
HTTP methods are called idempotent precisely because executing their side-effects multiple times has the same effect as executing them only once. You are saying "idempotency meansf∘f = f
", whereas in programming, we mean "executingf
has the same effect has executingf; f
". Note that you can easily transform the second meaning into the former by adding a "world" parameter.
– Jörg W Mittag
Mar 4 at 8:28
23
@Neil "Idempotency is strictly a mathematical term." No it isn't, its also used in networking and client server communication/distributed systems as well and is described as JörgWMittag describes it. Its a useful concept because it allows multiple requests to a server/client with the same operation/message with out changing what that original message set out to do. This is useful when you have unreliable communication, and you need to retry a command because either the clients message was dropped or the servers reply was.
– opa
Mar 4 at 14:39
7
You should go into more detail about the difference between pure and idempotent. Your example func1 is not idempotent becausefunc1(1) != func1(func1(1))
.
– Tezra
Mar 4 at 20:29
5
Purity and idempotence are different. A pure function doesn't have to be idempotent in mathematical sense (it is abviously idempotent in terms of side-effects, as it has none). Idempotent (in programming sense) function doesn't have to be pure, as in example given by OP. Also, as opa mentioned, idempotence is a useful property with a strictly different use than purity. Your definition of purity as "idempotent and with no side-effects" is wrong or at least misleading, downvoting.
– Frax
Mar 4 at 22:55
5
In the context of programming, there are no "side effects", but if you were to expand the definition to include this, then a idempotent function and a pure function would mean the same thing. No, they wouldn't mean the same thing at all. Idempotent, not pure:void f(int var) { someGlobalVariable = var; }
. Pure, not idempotent:int func1(int var) { return var + 1; }
.
– JLRishe
Mar 5 at 14:39
|
show 4 more comments
The precise term for this (as Woofas mentions) is idempotence. I wanted to add that while you could call your func1
method idempotent, you could not call it a pure function. The properties of a pure function are two: it must be idempotent and it must not have side effects, which is to say, no mutation of local static variables, non-local variables, mutable reference arguments or I/O streams.
The reason I mention this is that a idempotent function with side effects is not good either, since technically idempotent refers to the return output of the function, and not to the side effects. So technically your func2
method is idempotent, as the output doesn't change according to the input.
You most likely want to specify that you want a pure function. An example of a pure function might be as follows:
int func1(int var)
{
return var + 1;
}
More reading can be found in the Wikipedia article "Pure function".
37
I think your definition of idempotency is too narrow, or put another way, you are using the mathematical definition of idempotency, not the programming one. For example, thePUT
andDELETE
HTTP methods are called idempotent precisely because executing their side-effects multiple times has the same effect as executing them only once. You are saying "idempotency meansf∘f = f
", whereas in programming, we mean "executingf
has the same effect has executingf; f
". Note that you can easily transform the second meaning into the former by adding a "world" parameter.
– Jörg W Mittag
Mar 4 at 8:28
23
@Neil "Idempotency is strictly a mathematical term." No it isn't, its also used in networking and client server communication/distributed systems as well and is described as JörgWMittag describes it. Its a useful concept because it allows multiple requests to a server/client with the same operation/message with out changing what that original message set out to do. This is useful when you have unreliable communication, and you need to retry a command because either the clients message was dropped or the servers reply was.
– opa
Mar 4 at 14:39
7
You should go into more detail about the difference between pure and idempotent. Your example func1 is not idempotent becausefunc1(1) != func1(func1(1))
.
– Tezra
Mar 4 at 20:29
5
Purity and idempotence are different. A pure function doesn't have to be idempotent in mathematical sense (it is abviously idempotent in terms of side-effects, as it has none). Idempotent (in programming sense) function doesn't have to be pure, as in example given by OP. Also, as opa mentioned, idempotence is a useful property with a strictly different use than purity. Your definition of purity as "idempotent and with no side-effects" is wrong or at least misleading, downvoting.
– Frax
Mar 4 at 22:55
5
In the context of programming, there are no "side effects", but if you were to expand the definition to include this, then a idempotent function and a pure function would mean the same thing. No, they wouldn't mean the same thing at all. Idempotent, not pure:void f(int var) { someGlobalVariable = var; }
. Pure, not idempotent:int func1(int var) { return var + 1; }
.
– JLRishe
Mar 5 at 14:39
|
show 4 more comments
The precise term for this (as Woofas mentions) is idempotence. I wanted to add that while you could call your func1
method idempotent, you could not call it a pure function. The properties of a pure function are two: it must be idempotent and it must not have side effects, which is to say, no mutation of local static variables, non-local variables, mutable reference arguments or I/O streams.
The reason I mention this is that a idempotent function with side effects is not good either, since technically idempotent refers to the return output of the function, and not to the side effects. So technically your func2
method is idempotent, as the output doesn't change according to the input.
You most likely want to specify that you want a pure function. An example of a pure function might be as follows:
int func1(int var)
{
return var + 1;
}
More reading can be found in the Wikipedia article "Pure function".
The precise term for this (as Woofas mentions) is idempotence. I wanted to add that while you could call your func1
method idempotent, you could not call it a pure function. The properties of a pure function are two: it must be idempotent and it must not have side effects, which is to say, no mutation of local static variables, non-local variables, mutable reference arguments or I/O streams.
The reason I mention this is that a idempotent function with side effects is not good either, since technically idempotent refers to the return output of the function, and not to the side effects. So technically your func2
method is idempotent, as the output doesn't change according to the input.
You most likely want to specify that you want a pure function. An example of a pure function might be as follows:
int func1(int var)
{
return var + 1;
}
More reading can be found in the Wikipedia article "Pure function".
edited Mar 6 at 12:18
gerrit
5261419
5261419
answered Mar 4 at 7:48
NeilNeil
20.6k3770
20.6k3770
37
I think your definition of idempotency is too narrow, or put another way, you are using the mathematical definition of idempotency, not the programming one. For example, thePUT
andDELETE
HTTP methods are called idempotent precisely because executing their side-effects multiple times has the same effect as executing them only once. You are saying "idempotency meansf∘f = f
", whereas in programming, we mean "executingf
has the same effect has executingf; f
". Note that you can easily transform the second meaning into the former by adding a "world" parameter.
– Jörg W Mittag
Mar 4 at 8:28
23
@Neil "Idempotency is strictly a mathematical term." No it isn't, its also used in networking and client server communication/distributed systems as well and is described as JörgWMittag describes it. Its a useful concept because it allows multiple requests to a server/client with the same operation/message with out changing what that original message set out to do. This is useful when you have unreliable communication, and you need to retry a command because either the clients message was dropped or the servers reply was.
– opa
Mar 4 at 14:39
7
You should go into more detail about the difference between pure and idempotent. Your example func1 is not idempotent becausefunc1(1) != func1(func1(1))
.
– Tezra
Mar 4 at 20:29
5
Purity and idempotence are different. A pure function doesn't have to be idempotent in mathematical sense (it is abviously idempotent in terms of side-effects, as it has none). Idempotent (in programming sense) function doesn't have to be pure, as in example given by OP. Also, as opa mentioned, idempotence is a useful property with a strictly different use than purity. Your definition of purity as "idempotent and with no side-effects" is wrong or at least misleading, downvoting.
– Frax
Mar 4 at 22:55
5
In the context of programming, there are no "side effects", but if you were to expand the definition to include this, then a idempotent function and a pure function would mean the same thing. No, they wouldn't mean the same thing at all. Idempotent, not pure:void f(int var) { someGlobalVariable = var; }
. Pure, not idempotent:int func1(int var) { return var + 1; }
.
– JLRishe
Mar 5 at 14:39
|
show 4 more comments
37
I think your definition of idempotency is too narrow, or put another way, you are using the mathematical definition of idempotency, not the programming one. For example, thePUT
andDELETE
HTTP methods are called idempotent precisely because executing their side-effects multiple times has the same effect as executing them only once. You are saying "idempotency meansf∘f = f
", whereas in programming, we mean "executingf
has the same effect has executingf; f
". Note that you can easily transform the second meaning into the former by adding a "world" parameter.
– Jörg W Mittag
Mar 4 at 8:28
23
@Neil "Idempotency is strictly a mathematical term." No it isn't, its also used in networking and client server communication/distributed systems as well and is described as JörgWMittag describes it. Its a useful concept because it allows multiple requests to a server/client with the same operation/message with out changing what that original message set out to do. This is useful when you have unreliable communication, and you need to retry a command because either the clients message was dropped or the servers reply was.
– opa
Mar 4 at 14:39
7
You should go into more detail about the difference between pure and idempotent. Your example func1 is not idempotent becausefunc1(1) != func1(func1(1))
.
– Tezra
Mar 4 at 20:29
5
Purity and idempotence are different. A pure function doesn't have to be idempotent in mathematical sense (it is abviously idempotent in terms of side-effects, as it has none). Idempotent (in programming sense) function doesn't have to be pure, as in example given by OP. Also, as opa mentioned, idempotence is a useful property with a strictly different use than purity. Your definition of purity as "idempotent and with no side-effects" is wrong or at least misleading, downvoting.
– Frax
Mar 4 at 22:55
5
In the context of programming, there are no "side effects", but if you were to expand the definition to include this, then a idempotent function and a pure function would mean the same thing. No, they wouldn't mean the same thing at all. Idempotent, not pure:void f(int var) { someGlobalVariable = var; }
. Pure, not idempotent:int func1(int var) { return var + 1; }
.
– JLRishe
Mar 5 at 14:39
37
37
I think your definition of idempotency is too narrow, or put another way, you are using the mathematical definition of idempotency, not the programming one. For example, the
PUT
and DELETE
HTTP methods are called idempotent precisely because executing their side-effects multiple times has the same effect as executing them only once. You are saying "idempotency means f∘f = f
", whereas in programming, we mean "executing f
has the same effect has executing f; f
". Note that you can easily transform the second meaning into the former by adding a "world" parameter.– Jörg W Mittag
Mar 4 at 8:28
I think your definition of idempotency is too narrow, or put another way, you are using the mathematical definition of idempotency, not the programming one. For example, the
PUT
and DELETE
HTTP methods are called idempotent precisely because executing their side-effects multiple times has the same effect as executing them only once. You are saying "idempotency means f∘f = f
", whereas in programming, we mean "executing f
has the same effect has executing f; f
". Note that you can easily transform the second meaning into the former by adding a "world" parameter.– Jörg W Mittag
Mar 4 at 8:28
23
23
@Neil "Idempotency is strictly a mathematical term." No it isn't, its also used in networking and client server communication/distributed systems as well and is described as JörgWMittag describes it. Its a useful concept because it allows multiple requests to a server/client with the same operation/message with out changing what that original message set out to do. This is useful when you have unreliable communication, and you need to retry a command because either the clients message was dropped or the servers reply was.
– opa
Mar 4 at 14:39
@Neil "Idempotency is strictly a mathematical term." No it isn't, its also used in networking and client server communication/distributed systems as well and is described as JörgWMittag describes it. Its a useful concept because it allows multiple requests to a server/client with the same operation/message with out changing what that original message set out to do. This is useful when you have unreliable communication, and you need to retry a command because either the clients message was dropped or the servers reply was.
– opa
Mar 4 at 14:39
7
7
You should go into more detail about the difference between pure and idempotent. Your example func1 is not idempotent because
func1(1) != func1(func1(1))
.– Tezra
Mar 4 at 20:29
You should go into more detail about the difference between pure and idempotent. Your example func1 is not idempotent because
func1(1) != func1(func1(1))
.– Tezra
Mar 4 at 20:29
5
5
Purity and idempotence are different. A pure function doesn't have to be idempotent in mathematical sense (it is abviously idempotent in terms of side-effects, as it has none). Idempotent (in programming sense) function doesn't have to be pure, as in example given by OP. Also, as opa mentioned, idempotence is a useful property with a strictly different use than purity. Your definition of purity as "idempotent and with no side-effects" is wrong or at least misleading, downvoting.
– Frax
Mar 4 at 22:55
Purity and idempotence are different. A pure function doesn't have to be idempotent in mathematical sense (it is abviously idempotent in terms of side-effects, as it has none). Idempotent (in programming sense) function doesn't have to be pure, as in example given by OP. Also, as opa mentioned, idempotence is a useful property with a strictly different use than purity. Your definition of purity as "idempotent and with no side-effects" is wrong or at least misleading, downvoting.
– Frax
Mar 4 at 22:55
5
5
In the context of programming, there are no "side effects", but if you were to expand the definition to include this, then a idempotent function and a pure function would mean the same thing. No, they wouldn't mean the same thing at all. Idempotent, not pure:
void f(int var) { someGlobalVariable = var; }
. Pure, not idempotent: int func1(int var) { return var + 1; }
.– JLRishe
Mar 5 at 14:39
In the context of programming, there are no "side effects", but if you were to expand the definition to include this, then a idempotent function and a pure function would mean the same thing. No, they wouldn't mean the same thing at all. Idempotent, not pure:
void f(int var) { someGlobalVariable = var; }
. Pure, not idempotent: int func1(int var) { return var + 1; }
.– JLRishe
Mar 5 at 14:39
|
show 4 more comments
The Term is Idempotence. Note below that there is a distinct difference between an Idempotent function (Called recursively on itself; Second code block and the Mathematical definition), and functional idempotence (Called repeatedly with same input sequentially; First code block and often the term meant in Programming).
A function f with side effects is said to be idempotent under sequential composition f; f if, when called twice with the same list of arguments, the second call has no side effects and returns the same value as the first call[citation needed] (assuming no other procedures were called between the end of the first call and the start of the second call).
For instance, consider the following Python code:
x = 0
def setx(n):
global x
x = n
setx(5)
setx(5)
Here, setx is idempotent because the second call to setx (with the same argument) does not change the visible program state: x was already set to 5 in the first call, and is again set to 5 in the second call, thus keeping the same value. Note that this is distinct from idempotence under function composition f ∘ f. For example, the absolute value is idempotent under function composition:
def abs(n):
if n < 0:
return -n
else:
return n
abs(-5) == abs(abs(-5)) == abs(5) == 5
add a comment |
The Term is Idempotence. Note below that there is a distinct difference between an Idempotent function (Called recursively on itself; Second code block and the Mathematical definition), and functional idempotence (Called repeatedly with same input sequentially; First code block and often the term meant in Programming).
A function f with side effects is said to be idempotent under sequential composition f; f if, when called twice with the same list of arguments, the second call has no side effects and returns the same value as the first call[citation needed] (assuming no other procedures were called between the end of the first call and the start of the second call).
For instance, consider the following Python code:
x = 0
def setx(n):
global x
x = n
setx(5)
setx(5)
Here, setx is idempotent because the second call to setx (with the same argument) does not change the visible program state: x was already set to 5 in the first call, and is again set to 5 in the second call, thus keeping the same value. Note that this is distinct from idempotence under function composition f ∘ f. For example, the absolute value is idempotent under function composition:
def abs(n):
if n < 0:
return -n
else:
return n
abs(-5) == abs(abs(-5)) == abs(5) == 5
add a comment |
The Term is Idempotence. Note below that there is a distinct difference between an Idempotent function (Called recursively on itself; Second code block and the Mathematical definition), and functional idempotence (Called repeatedly with same input sequentially; First code block and often the term meant in Programming).
A function f with side effects is said to be idempotent under sequential composition f; f if, when called twice with the same list of arguments, the second call has no side effects and returns the same value as the first call[citation needed] (assuming no other procedures were called between the end of the first call and the start of the second call).
For instance, consider the following Python code:
x = 0
def setx(n):
global x
x = n
setx(5)
setx(5)
Here, setx is idempotent because the second call to setx (with the same argument) does not change the visible program state: x was already set to 5 in the first call, and is again set to 5 in the second call, thus keeping the same value. Note that this is distinct from idempotence under function composition f ∘ f. For example, the absolute value is idempotent under function composition:
def abs(n):
if n < 0:
return -n
else:
return n
abs(-5) == abs(abs(-5)) == abs(5) == 5
The Term is Idempotence. Note below that there is a distinct difference between an Idempotent function (Called recursively on itself; Second code block and the Mathematical definition), and functional idempotence (Called repeatedly with same input sequentially; First code block and often the term meant in Programming).
A function f with side effects is said to be idempotent under sequential composition f; f if, when called twice with the same list of arguments, the second call has no side effects and returns the same value as the first call[citation needed] (assuming no other procedures were called between the end of the first call and the start of the second call).
For instance, consider the following Python code:
x = 0
def setx(n):
global x
x = n
setx(5)
setx(5)
Here, setx is idempotent because the second call to setx (with the same argument) does not change the visible program state: x was already set to 5 in the first call, and is again set to 5 in the second call, thus keeping the same value. Note that this is distinct from idempotence under function composition f ∘ f. For example, the absolute value is idempotent under function composition:
def abs(n):
if n < 0:
return -n
else:
return n
abs(-5) == abs(abs(-5)) == abs(5) == 5
answered Mar 4 at 20:41
TezraTezra
19210
19210
add a comment |
add a comment |
In physics I've heard this referred to as a projection:
a projection is a linear transformation P from a vector space to itself such that P2 = P. That is, whenever P is applied twice to any value, it gives the same result as if it were applied once (idempotent).
Graphically, this makes sense if you look at a cartoon of a vector projection:
In the picture, a1 is the projection of a on to b, which is like the first application of your function. Subsequent projections of a1 on to b give the same result a1. In other words, when you call a projection repeatedly, it has the same effect as calling it once.
Fair warning: I've never heard this used outside of physics, so unless you've got of those types on your team you might confuse everyone.
2
This is indeed a nice concrete example of how an idempotent function can be visualized (mathematically, and especially in the vector geometry / linear algebra field). While software function's "idempotence" is a really close concept, I don't think developers / computer scientist often use the word "projection" in this context (a "projection function" in software engineering would rather refer to a function that take an object and returns a new object derived from it, or a property of that object, for instance)
– Pac0
Mar 4 at 22:47
2
@Pac0 Oh, ok. I work on the fringe between science and programming, and didn't realize the word was already overloaded. I can think of a few contrived examples at work where I would use this terminology, but I admittedly work with people that are willing to put up with science jargon on the daily :-)
– user1717828
Mar 5 at 1:21
add a comment |
In physics I've heard this referred to as a projection:
a projection is a linear transformation P from a vector space to itself such that P2 = P. That is, whenever P is applied twice to any value, it gives the same result as if it were applied once (idempotent).
Graphically, this makes sense if you look at a cartoon of a vector projection:
In the picture, a1 is the projection of a on to b, which is like the first application of your function. Subsequent projections of a1 on to b give the same result a1. In other words, when you call a projection repeatedly, it has the same effect as calling it once.
Fair warning: I've never heard this used outside of physics, so unless you've got of those types on your team you might confuse everyone.
2
This is indeed a nice concrete example of how an idempotent function can be visualized (mathematically, and especially in the vector geometry / linear algebra field). While software function's "idempotence" is a really close concept, I don't think developers / computer scientist often use the word "projection" in this context (a "projection function" in software engineering would rather refer to a function that take an object and returns a new object derived from it, or a property of that object, for instance)
– Pac0
Mar 4 at 22:47
2
@Pac0 Oh, ok. I work on the fringe between science and programming, and didn't realize the word was already overloaded. I can think of a few contrived examples at work where I would use this terminology, but I admittedly work with people that are willing to put up with science jargon on the daily :-)
– user1717828
Mar 5 at 1:21
add a comment |
In physics I've heard this referred to as a projection:
a projection is a linear transformation P from a vector space to itself such that P2 = P. That is, whenever P is applied twice to any value, it gives the same result as if it were applied once (idempotent).
Graphically, this makes sense if you look at a cartoon of a vector projection:
In the picture, a1 is the projection of a on to b, which is like the first application of your function. Subsequent projections of a1 on to b give the same result a1. In other words, when you call a projection repeatedly, it has the same effect as calling it once.
Fair warning: I've never heard this used outside of physics, so unless you've got of those types on your team you might confuse everyone.
In physics I've heard this referred to as a projection:
a projection is a linear transformation P from a vector space to itself such that P2 = P. That is, whenever P is applied twice to any value, it gives the same result as if it were applied once (idempotent).
Graphically, this makes sense if you look at a cartoon of a vector projection:
In the picture, a1 is the projection of a on to b, which is like the first application of your function. Subsequent projections of a1 on to b give the same result a1. In other words, when you call a projection repeatedly, it has the same effect as calling it once.
Fair warning: I've never heard this used outside of physics, so unless you've got of those types on your team you might confuse everyone.
answered Mar 4 at 15:17
user1717828user1717828
1787
1787
2
This is indeed a nice concrete example of how an idempotent function can be visualized (mathematically, and especially in the vector geometry / linear algebra field). While software function's "idempotence" is a really close concept, I don't think developers / computer scientist often use the word "projection" in this context (a "projection function" in software engineering would rather refer to a function that take an object and returns a new object derived from it, or a property of that object, for instance)
– Pac0
Mar 4 at 22:47
2
@Pac0 Oh, ok. I work on the fringe between science and programming, and didn't realize the word was already overloaded. I can think of a few contrived examples at work where I would use this terminology, but I admittedly work with people that are willing to put up with science jargon on the daily :-)
– user1717828
Mar 5 at 1:21
add a comment |
2
This is indeed a nice concrete example of how an idempotent function can be visualized (mathematically, and especially in the vector geometry / linear algebra field). While software function's "idempotence" is a really close concept, I don't think developers / computer scientist often use the word "projection" in this context (a "projection function" in software engineering would rather refer to a function that take an object and returns a new object derived from it, or a property of that object, for instance)
– Pac0
Mar 4 at 22:47
2
@Pac0 Oh, ok. I work on the fringe between science and programming, and didn't realize the word was already overloaded. I can think of a few contrived examples at work where I would use this terminology, but I admittedly work with people that are willing to put up with science jargon on the daily :-)
– user1717828
Mar 5 at 1:21
2
2
This is indeed a nice concrete example of how an idempotent function can be visualized (mathematically, and especially in the vector geometry / linear algebra field). While software function's "idempotence" is a really close concept, I don't think developers / computer scientist often use the word "projection" in this context (a "projection function" in software engineering would rather refer to a function that take an object and returns a new object derived from it, or a property of that object, for instance)
– Pac0
Mar 4 at 22:47
This is indeed a nice concrete example of how an idempotent function can be visualized (mathematically, and especially in the vector geometry / linear algebra field). While software function's "idempotence" is a really close concept, I don't think developers / computer scientist often use the word "projection" in this context (a "projection function" in software engineering would rather refer to a function that take an object and returns a new object derived from it, or a property of that object, for instance)
– Pac0
Mar 4 at 22:47
2
2
@Pac0 Oh, ok. I work on the fringe between science and programming, and didn't realize the word was already overloaded. I can think of a few contrived examples at work where I would use this terminology, but I admittedly work with people that are willing to put up with science jargon on the daily :-)
– user1717828
Mar 5 at 1:21
@Pac0 Oh, ok. I work on the fringe between science and programming, and didn't realize the word was already overloaded. I can think of a few contrived examples at work where I would use this terminology, but I admittedly work with people that are willing to put up with science jargon on the daily :-)
– user1717828
Mar 5 at 1:21
add a comment |
It is a Deterministic algorithm because given the same input (in this case no input), it will always produce the same output.
In computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently.
SQL databases are interested in Deterministic functions.
A deterministic function always gives the same answer when it has the same inputs. Most built-in SQL functions in SQLite are deterministic. For example, the abs(X) function always returns the same answer as long as its input X is the same.
A function must be deterministic if it's used in calculating an index.
For instance, in SQLite, the following non-deterministic functions cannot be used in an index: random()
, changes()
, last_insert_rowid()
and sqlite3_version()
.
6
The asker'sfunc2
is deterministic (there are no random effects involved), but already declared as violating the property he is looking for.
– Draco18s
Mar 4 at 22:17
That the same result is produced by repetition is not the same as saying the same result is produced by nesting or chaining. Deterministic functions are important for caching results, more so than for indexing/hashing.
– mckenzm
Mar 5 at 5:59
add a comment |
It is a Deterministic algorithm because given the same input (in this case no input), it will always produce the same output.
In computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently.
SQL databases are interested in Deterministic functions.
A deterministic function always gives the same answer when it has the same inputs. Most built-in SQL functions in SQLite are deterministic. For example, the abs(X) function always returns the same answer as long as its input X is the same.
A function must be deterministic if it's used in calculating an index.
For instance, in SQLite, the following non-deterministic functions cannot be used in an index: random()
, changes()
, last_insert_rowid()
and sqlite3_version()
.
6
The asker'sfunc2
is deterministic (there are no random effects involved), but already declared as violating the property he is looking for.
– Draco18s
Mar 4 at 22:17
That the same result is produced by repetition is not the same as saying the same result is produced by nesting or chaining. Deterministic functions are important for caching results, more so than for indexing/hashing.
– mckenzm
Mar 5 at 5:59
add a comment |
It is a Deterministic algorithm because given the same input (in this case no input), it will always produce the same output.
In computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently.
SQL databases are interested in Deterministic functions.
A deterministic function always gives the same answer when it has the same inputs. Most built-in SQL functions in SQLite are deterministic. For example, the abs(X) function always returns the same answer as long as its input X is the same.
A function must be deterministic if it's used in calculating an index.
For instance, in SQLite, the following non-deterministic functions cannot be used in an index: random()
, changes()
, last_insert_rowid()
and sqlite3_version()
.
It is a Deterministic algorithm because given the same input (in this case no input), it will always produce the same output.
In computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently.
SQL databases are interested in Deterministic functions.
A deterministic function always gives the same answer when it has the same inputs. Most built-in SQL functions in SQLite are deterministic. For example, the abs(X) function always returns the same answer as long as its input X is the same.
A function must be deterministic if it's used in calculating an index.
For instance, in SQLite, the following non-deterministic functions cannot be used in an index: random()
, changes()
, last_insert_rowid()
and sqlite3_version()
.
edited Mar 4 at 21:17
answered Mar 4 at 21:12
Stephen QuanStephen Quan
20113
20113
6
The asker'sfunc2
is deterministic (there are no random effects involved), but already declared as violating the property he is looking for.
– Draco18s
Mar 4 at 22:17
That the same result is produced by repetition is not the same as saying the same result is produced by nesting or chaining. Deterministic functions are important for caching results, more so than for indexing/hashing.
– mckenzm
Mar 5 at 5:59
add a comment |
6
The asker'sfunc2
is deterministic (there are no random effects involved), but already declared as violating the property he is looking for.
– Draco18s
Mar 4 at 22:17
That the same result is produced by repetition is not the same as saying the same result is produced by nesting or chaining. Deterministic functions are important for caching results, more so than for indexing/hashing.
– mckenzm
Mar 5 at 5:59
6
6
The asker's
func2
is deterministic (there are no random effects involved), but already declared as violating the property he is looking for.– Draco18s
Mar 4 at 22:17
The asker's
func2
is deterministic (there are no random effects involved), but already declared as violating the property he is looking for.– Draco18s
Mar 4 at 22:17
That the same result is produced by repetition is not the same as saying the same result is produced by nesting or chaining. Deterministic functions are important for caching results, more so than for indexing/hashing.
– mckenzm
Mar 5 at 5:59
That the same result is produced by repetition is not the same as saying the same result is produced by nesting or chaining. Deterministic functions are important for caching results, more so than for indexing/hashing.
– mckenzm
Mar 5 at 5:59
add a comment |
In addition to the other answers, if there is a specific input to the functon that has this property, it is a fixed point, invariant point or fixpoint of the function. For example, 1 to any power is equal to 1, so (1ⁿ)ⁿ = 1ⁿ = 1.
The special case of a program that produces itself as output is a quine.
Quines are to software as Cantor sets are to math :-) . And of course quines are not idempotent -- they either fail when the output already exists or they "clobber" the previous result and write a new, albeit identical output.
– Carl Witthoft
Mar 6 at 15:17
add a comment |
In addition to the other answers, if there is a specific input to the functon that has this property, it is a fixed point, invariant point or fixpoint of the function. For example, 1 to any power is equal to 1, so (1ⁿ)ⁿ = 1ⁿ = 1.
The special case of a program that produces itself as output is a quine.
Quines are to software as Cantor sets are to math :-) . And of course quines are not idempotent -- they either fail when the output already exists or they "clobber" the previous result and write a new, albeit identical output.
– Carl Witthoft
Mar 6 at 15:17
add a comment |
In addition to the other answers, if there is a specific input to the functon that has this property, it is a fixed point, invariant point or fixpoint of the function. For example, 1 to any power is equal to 1, so (1ⁿ)ⁿ = 1ⁿ = 1.
The special case of a program that produces itself as output is a quine.
In addition to the other answers, if there is a specific input to the functon that has this property, it is a fixed point, invariant point or fixpoint of the function. For example, 1 to any power is equal to 1, so (1ⁿ)ⁿ = 1ⁿ = 1.
The special case of a program that produces itself as output is a quine.
answered Mar 4 at 22:20
DavislorDavislor
1,056610
1,056610
Quines are to software as Cantor sets are to math :-) . And of course quines are not idempotent -- they either fail when the output already exists or they "clobber" the previous result and write a new, albeit identical output.
– Carl Witthoft
Mar 6 at 15:17
add a comment |
Quines are to software as Cantor sets are to math :-) . And of course quines are not idempotent -- they either fail when the output already exists or they "clobber" the previous result and write a new, albeit identical output.
– Carl Witthoft
Mar 6 at 15:17
Quines are to software as Cantor sets are to math :-) . And of course quines are not idempotent -- they either fail when the output already exists or they "clobber" the previous result and write a new, albeit identical output.
– Carl Witthoft
Mar 6 at 15:17
Quines are to software as Cantor sets are to math :-) . And of course quines are not idempotent -- they either fail when the output already exists or they "clobber" the previous result and write a new, albeit identical output.
– Carl Witthoft
Mar 6 at 15:17
add a comment |
protected by gnat Mar 5 at 6:07
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
67
To the close voter(s): while it is true that 99.999% (rough estimate) of all "name-that-thing" questions are off-topic because they don't have a single, correct, unambiguous, objective answer and the naming is purely subjective and opinion-based, this one does have a single, correct, unambiguous, objective answer, which was given by the OP himself.
– Jörg W Mittag
Mar 4 at 8:38
30
Calling it multiple times does have an effect, as there could be other code that changed 'var' in between.
– RemcoGerlich
Mar 4 at 9:50
7
Why was this question asked, if the OP knew the answer at the time of asking? Is there any reason other than rep/points/karma building?
– dotancohen
Mar 4 at 16:29
12
@dotancohen Q/A style self-answering is one of the key concepts on StackExchange.
– glglgl
Mar 4 at 16:31
17
@glglgl: I agree, for questions with merit. What merit has this question? I'm seriously concerned that we'll start getting every CS 101 question asked and immediately answered by the OP, every single CS term asked and immediately defined by the OP, and every basic algorithm's pros and cons questioned then immediately answered by the OP (not necessarily this OP). Is that the site that we want softwareengineering.SE to be?
– dotancohen
Mar 4 at 16:37