複数回適用でき、最初のアプリケーションを超えて状態を変更しない操作の言葉は何ですか?


38

私は単語を思い出そうとしています。それは計算理論またはデータベース理論に関連していると思います。最も近い同義語はですatomicが、それは正確ではありません。基本的に、それは、連続して複数回実行された場合でも同じ結果を生成する一種の計算です。つまり、それ自体に副作用は発生しません。

具体的には、chmodコマンド(またはその他の権限に関連する操作)に関するStack Overflowの回答でこの言葉に出くわしました。

うまくいけば、それで十分です。ウィキペディアを突っ込んでも大した助けにはなりません。


5
操作のすべての呼び出しに同じ入力を渡すか、前の呼び出しの結果に対して次のすべての操作を実行するかを指定することは理にかなっています。
maxim1000

3
@ maxim1000同意しました。さまざまな答えから判断すると、OPが何を意味したのかは誰にもわかりません。
フォード

ここでの問題は、件名の質問が本文の質問と厳密に同じではないことです。主題の1つに答えましたが、今もう一度見て、それがポスターが望んでいたものではないことを確信しています。質問の編集、回答の削除
-pdr

GETリクエスト(何かに関係なく毎回同じ結果が返される)のようなものを求めていますか、それとも割り当て演算子のようなものを求めていますか(効果はありますが、同じ割り当てを繰り返しても何も変わりません) )?
イズカタ

回答:


91

あなたは「と考えるかもしれないべき等」。

べき等性とは、数学およびコンピューターサイエンスにおける特定の操作の特性であり、最初の適用を超えて結果を変更せずに複数回適用できることです。


16
基本的にfは、dem等なIFF f(f(x)) == f(x)FORALL xです。
ヨルグWミットタグ

1
説明の興味深い制限-リンクされたページのトークセクションでは、エレベーターボタンについて説明します。MathまたはComp Sciに関連しない「べき等」と記述できる動作は1000種類ある必要があります。
-mattnz

質問の私の理解から、彼は最初の反復の結果にアルゴリズムを適用するのではなく、同じソースデータにそれを再適用することについて話していないので、OPが求めているものではありません。x = yの場合、F(x)= F(y)のようなもの
Joubarc

2
@Joubarcはい、べき等は、コンピューティングにおいて残りの数学よりも少し緩い意味を持っているので、正しいです。en.wikipedia.org/wiki/Idempotent#Computer_science_meaning
jk。

1
@Joubarcそれは単に関数であることを意味します。同じ入力に対して異なる動作をする可能性のある操作を、数学的な観点から関数と呼ぶことはできません。プログラミングで関数と呼ばれる場合、実際に同じ入力に対して実際に常に同じ出力を与えるpure関数は関数と呼ばれます...まあ、ちょっと、それらはまったく副作用を持ってはいけません。
ポールステリアン

12

一般的な言葉は、コンピューターと数学の両方に適用されるI等性です。しばしば混乱するリエントラントと同じものではありません。dem等はまさにあなたが説明したものです。リエントラントは基本的に中断可能で、中断したところから正確に再開することができます。

Haskellのような純粋に機能的な言語は、可能な限りべき等元に近いという原則に基づいて構築されています。データベース理論の頭字語ACIDの最初の3文字は、データベースに適用されるapplied等です。


10

あなたは純粋な機能を探しているかもしれません。

リンクで定義されているように、2つの条件により関数が純粋になります。

  1. この関数は、同じ引数値が与えられた場合、常に同じ結果値を評価します。
  2. 結果の評価は、可変オブジェクトの変更やI / Oデバイスへの出力など、意味的に観察可能な副作用や出力を引き起こしません。

4
純粋性は単純なdem等性を超えています。純粋な関数は副作用を持ち得ません。一方、one等性関数は、後続の実行で異なることを行わない限り、副作用を持つことができます。たとえば、ローカル可変変数を使用する関数は純粋ではありませんが、おそらくべき等です。グローバル変数を使用して、リエントラントにするためにそれらのグローバルを保護している限り、still等である関数を作成することもできます。
-tdammers

3
@tdammers純度とi等性は完全に直交しています。純粋な関数はa等である必要はなく、その逆も同様です。たとえば、f(x) := x + 1は純粋ですが、certainly等ではありません。
コンラッドルドルフ


0

別の可能性は決定論的です。

コンピューターサイエンスでは、決定論的アルゴリズムは、特定の入力が与えられると、常に同じ出力を生成し、基になるマシンは常に同じ状態シーケンスを通過するアルゴリズムです。


1
これは以前の回答を削除したばかりです。「これは間違っています。たとえば、2つの値を交換するアルゴリズムは完全に決定論的ですが、2回実行しても1回実行しても同じ結果にはなりません。」
gnat

2
元の質問の言い回しがあまりよくないため、これが元の質問に答えるかどうかは明らかではありませんが、決定論という言葉は誰かが最終的に探していたものである可能性が高いため、私はこの回答に賛成票を投じましたここに。
リチャードホワイトヘッド

次回の実行前に入力値を変更した場合、同じ正確な引数値をルーチンに提供すると主張するにはどうすればよいですか?
ハインハラルドソンバーグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.