Haskell の純粋な関数が変数のローカル コピーを変更することは可能ですか? 関数型プログラミングは詐欺です! 、デビッド・ノーレン?そうでない場合、これの理由は何ですか?もしそうなら、誰かが私に指摘できる例はありますか?
呼び出し元には純粋に見えるが、内部的にミューテーションを使用する関数で同様の質問がなされました。一般的なコンセンサスは、ミューテーションが変数のローカル コピーに対して実行される限り (つまり、効果の変異は関数をエスケープせず、非局所的な効果があります)。
リストを変更しないShen ( Local Mutation, global Mutation, mutable datastructures , Bubblesort in Qi )のバブルソートを Common Lisp に翻訳し、変更する Common LispのBubblesortのバブルソートと比較すると、疑問が生じました。リスト。その結果、(Common Lisp では) リストを変更したバージョンは、非常に大きなリストの場合、リストを変更しなかったバージョンよりも大幅に高速であることがわかりました。