結果が引数の値のみに依存する場合に関数呼び出しを最適化できるおもちゃのコンパイラーを書いています。したがって、xorやconcatenateのような関数はそれらの入力のみに依存し、同じ入力でそれらを呼び出すと常に同じ出力が得られます。ただし、timeやrandなどの関数は「非表示」のプログラム状態に依存し、同じ入力でそれらを呼び出すと異なる出力が得られる場合があります。「同型」や「リエントラント」など、これら2つのタイプの機能を区別する形容詞が何であるかを理解しようとしています。誰かが私が探している言葉を教えてもらえますか?
1896 次
3 に答える
8
あなたが探している用語は純粋です
于 2010-01-13T09:05:33.747 に答える
7
私はそれが純粋関数と呼ばれていると思います:
コンピュータプログラミングでは、関数に関するこれらのステートメントの両方が成り立つ場合、関数は純粋であると説明される場合があります。
- 関数は、同じ引数値が与えられた場合、常に同じ結果値を評価します。関数の結果値は、プログラムの実行が進むにつれて、またはプログラムの異なる実行間で変化する可能性のある非表示の情報や状態に依存することはできません。また、I/Oデバイスからの外部入力に依存することもできません。
- 結果の評価は、可変オブジェクトの変更やI / Oデバイスへの出力など、意味的に観察可能な副作用や出力を引き起こしません。
結果の値は、引数値のすべて(またはいずれか)に依存する必要はありません。ただし、引数の値以外に依存する必要はありません。
于 2010-01-13T09:06:19.333 に答える
3
「純粋関数」で行けば、形容詞は「純粋」と言えるでしょう。
引数が常に同じであるときに出力が常に同じである関数は、「決定論的」と呼ばれることを常に学びました。個人的には、それはより説明的な用語だと思います。「純粋関数」は定義上決定論的であり、副作用がないように純粋関数も必要であるように思われます。すべての決定論的関数に当てはまる必要はないと思います(同じ引数の戻り値が常に同じである限り)。
ウィキペディアのリンク: http: //en.wikipedia.org/wiki/Deterministic_algorithm
引用:
特定の入力が与えられると、それは常に同じ出力を生成し、基礎となるマシンは常に同じ状態のシーケンスを通過します。
于 2010-01-13T09:19:26.343 に答える