Expert F#2.0のコピーを入手したところ、次のステートメントに出くわしました。
たとえば、必要に応じて、アルゴリズムの開始時に割り当てられたプライベートデータ構造に副作用を使用し、結果を返す前にこれらのデータ構造を破棄できます。その場合、全体的な結果は事実上副作用のない機能になります。F#ライブラリからの分離の一例は、ライブラリのList.mapの実装です。これは、内部でミューテーションを使用します。書き込みは、他のコードがアクセスできない内部の分離されたデータ構造で行われます。
さて、明らかにこのアプローチの利点はパフォーマンスです。不利な点があるかどうかだけ知りたいのですが、副作用を伴う可能性のある落とし穴はここに当てはまりますか?並列処理は影響を受けますか?
言い換えれば、パフォーマンスが確保されている場合List.map
、純粋な方法で実装することが望ましいでしょうか?
(明らかにこれは特にF#を扱っていますが、私は一般的な哲学にも興味があります)