The best days are ahead of us.

不純/純粋/不純のサンドイッチ

2025-04-08 10:00:25
Inpure/Pure/Inpure Sandwich

関数型プログラミングにおけるデザインパターンの一つに、I/O処理などに代表される不純な処理(入力が同じでも出力が異なる場合や、副作用を持つ場合がある処理)をプログラムの最初と最後にまとめ、その間の処理を純粋(同じ入力に対して常に同じ出力を返し、副作用を持たない状態)に保つという考え方があります。 この概念は、以下のように異なる表現で言い表されることもありますが、本質的には同じ内容を指しています。

この「不純/純粋/不純のサンドイッチ」という考え方は、理論上は理解しやすいのですが、実際のプログラムに応用するのは意外に難しい場合があります。 Mark Seemann氏が、そのような実践的な例をいくつかブログ記事にまとめていましたので、それらを日本語に翻訳してご紹介します。