令和6年度 春期 午前Ⅱ 問8
ソフトウェア開発管理技術
参照透過性の説明
純粋関数型言語がもつ特性の一つである参照透過性の説明はどれか。
- ア同じ引数を渡せば,関数は常に同じ結果を返す。
- イ関数を引数とすることや返却値とすることができる。
- ウコンパイル時に型検査を行い,型誤りがないことを保証する。
- エ実際に評価が必要になるまで式の評価を行わない。
答えと解説を見る
✓ これが正解ア同じ引数を渡せば,関数は常に同じ結果を返す。
解説
同じ引数なら必ず同じ結果を返す性質が参照透過性です。
参照透過性は、式をその値に置き換えてもプログラムの意味が変わらないという性質です。関数でいえば、同じ引数を渡せば、いつ呼び出しても同じ結果を返すことになります。そのためには、関数が外部の状態を読み書きしたり、呼ぶたびに内部の状態を変えたりしないことが前提になります。純粋関数型言語は副作用を持たない関数を基本にしているので、この性質が言語の特性として成り立ちます。ほかの選択肢は、関数を値として扱えること、型を事前に検査すること、評価を遅らせることで、どれも関数型言語に関わる話ですが参照透過性とは別の性質です。同じ入力なら同じ出力、と覚えておくと選べます。
ほかの選択肢はなぜ違うのか
- イ関数を引数とすることや返却値とすることが…:関数を引数や返却値として扱えるのは、関数をほかの値と同じように受け渡せるという性質です。関数型言語でよく使われる特徴ですが、同じ引数で常に同じ結果になることを述べたものではありません。
- ウコンパイル時に型検査を行い,型誤りがない…:コンパイル時に型を検査して型の誤りがないことを保証するのは、静的な型検査の説明です。プログラムの安全性に関わる性質ですが、関数の結果が引数だけで決まるかどうかとは別の話です。
- エ実際に評価が必要になるまで式の評価を行わ…:値が実際に必要になるまで式の評価を後回しにするのは、評価のタイミングに関する性質です。参照透過性と組み合わせて語られることはありますが、同じ引数で同じ結果を返すという性質そのものとは別物です。
出典:令和6年度 春期 システムアーキテクト試験 午前Ⅱ 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)