>385
プログラムの意味論における「状態が変化する」ことを副作用と言っている。
もっと広く、環境が変化すると言ってもいい。

状態が変化するとか環境が変化するというのは、意味上メモリの内容が変わったり、
コンソールに文字を表示させる事でコンソールの内容が変わったりといった事。
(意味上と限定したのは、実際 GHC は内部でメモリの内容を書き換えるかも知れんから)

コンテナに値突っ込むとか、箱に入れるとかはあくまでイメージなので、
その操作自体に副作用があるとか無いとかは関係ない。
その操作の時に中で何が行われるかによる。

そうイメージされる現象によって状態・環境が変化しなければ副作用は無いと言えるし
そうイメージされる現象によって状態・環境が変化すれば副作用はあると言える。

例えば State モナドは環境が変化しないので副作用は無い。
IO モナドは環境が変化する(可能性がある)ので副作用がある(可能性がある)。