関数型界隈で、「状態がある=副作用」みたいな話を何度か聴いてちょっと違和感があった。 副作用とは、主たる目的の他に外部に悪影響を与えることだと思っていたのだが。 つまり「Hello, World」を表示することは、あまり副作用と呼びたくない。(主作用?) そこで、そもそも副作用がどんなもので何が悪かったのかを思い出してみた。 例 以下、ひたすら例を挙げて感想を述べていくことにする。 JavaScriptで記述しているが、任意の言語に読み替えて問題ない。 データの更新1 function completeTodo(todo) { todo.done = true; } 引数を書き換えているが、そういう関数だと思って使えば特に問題にはならない。 データの更新2 function completeTodo(todo) { todo.done = true; return todo; } 似ている