してみる利点は、関数の実装内容が外部に「漏れる」ことがなければ、関数の利用側は関数の実装に無関係であることです。関数型プログラミングにおける関数でも、内部で命令的なプログラミングをしていたり、変数の状態を変更していたとしても、外部にもれなければ問題にはならないということです。ローカル変数の状態変更は関数が外部に漏れるのを防いでくれます。オブジェクトフィールドは常に参照可能なので、オブジェクトは不変ではありません。不変性を保つために関数の実装側がとりえる手段は実質つぎの3つのどれかになります。使う純粋関数を使ってコードを記述するメモ本書の中に出てきた、関数とかのメモ。与えられた値が存在するかどうかを返す関数です。みなされるかどうかを返す関数です。言語の遺物であると筆者は考えているようです。返す動作が使いやすい場合が多い。他のデータ型と同じように、扱うことができる関数のことです。関数と可変長引数をとる関数です。値の場合にはデフォルト値を使うようにして関数を呼び出します。引数にメソッド名を取り、メソッドの実行主体のオブジェクトを渡すとそのオブジェクトでメソッドを実行する関数を返します。1]]関数型のスタイルでは、関数の実行主体となるオブジェクトを引数にとる関数の形が好まれます。構築するために有用なパターンです。