Erlang での単一代入はどのようにしてより読みやすいコード (参照の透過性) につながりますか?
2 に答える
コーディングは簡単ですが、デバッグは難しいです。デバッグを簡単にするコード。-- バリー・ラウントリー
単一の代入を使用すると、変数が関数本体全体で 1 つの値を持つことを確認できます。これにより、デバッグがはるかに簡単になります。必要なときにいつでもデバッグとログを配置できます。価値を得る場所などを簡単に見つけることができます。当たり前じゃないですか?
関数型プログラムの目標の 1 つは、副作用を回避することです。要するに、これは、実行されるたびにまったく同じように動作するというコードのプロパティです。これが共有状態が避けられている理由であり、開発者がErlangのプロセス ディクショナリにしばしば眉をひそめる理由です。純粋な関数型言語には副作用はありません。Haskellなど、さまざまな関数型言語が、副作用を生成するコードを形式化しようとします。
明らかに、変数に割り当てられた値を変更できる場合、同じ関数を 2 回実行すると、変数に含まれる値に応じて異なる結果が生成されます。OOP では、オブジェクトに対して実行された関数からの出力は、そのオブジェクトに含まれる状態に依存する結果を生成します。したがって、オブジェクトに含まれる状態も知らなければ、コードを正しく理解することはできません。
単一の割り当てでは、出力は状態に依存せず、関数に渡された引数にのみ依存します。これは、何かがクラッシュしたときにスタック トレースがある場合や、関数からのデバッグ出力をログに記録する場合に特に役立ちます。コードを読み取って各変数に値を割り当てることができます。同じコードが再度実行されたとしても、これらの値は何も変更されないことがわかっています。