文脈: https://x.com/tomjaguarpaw/status/1917938120277872935
私の理解について話させてください…
この記事の定義に従うと、参照透過性と純粋性に大した違いはなく、わざわざ純粋という言葉を使う必要性は薄いというのは正しいと思います。
ただ、少なくとも私が見てきた議論では、純粋という言葉はこの記事の定義とは異なる意味で使われていると思います。指摘の通り、この記事は関数以外の、プログラム(あるコード断片)の純粋性について定義していませんし。
プログラムが純粋であるとは、それに副作用がないということです。これが、人々が使っているはずだと私が理解している、プログラムの純粋性の定義です。副作用とは、それが外界(言語「Haskell」が公式に定義する計算モデルの外部)の状態を変化させる、または外界の状態を受け取りそれに応じて以降の計算の進行を変化させるようなものです。参照透過性に由来する概念ではありません。ここで外界・内界の境界のどこに置くか、つまり「どこまでがHaskellなのか?」が問題になります1。まさにこれが問題なのです。