ホーム > システムアーキテクト試験 > 2024年
システムアーキテクト試験 2024年 午前2 問08
純粋関数型言語がもつ特性の一つである参照透過性の説明はどれか。
ア:同じ引数を渡せば、関数は常に同じ結果を返す。(正解)
イ:関数を引数とすることや返却値とすることができる。
エ:実際に評価が必要になるまで式の評価を行わない。
ウ:コンパイル時に型検査を行い、型誤りがないことを保証する。
解説
純粋関数型言語がもつ特性の一つである参照透過性の説明はどれか【午前2 解説】
要点まとめ
- 結論:参照透過性とは「同じ引数を渡せば常に同じ結果を返す」性質を指します。
- 根拠:純粋関数型言語では副作用がなく、関数の出力は入力だけで決まるため結果が一定です。
- 差がつくポイント:副作用の有無や評価戦略と混同せず、参照透過性の定義を正確に理解することが重要です。
正解の理由
ア: 同じ引数を渡せば、関数は常に同じ結果を返す。が正解です。
参照透過性とは、関数呼び出しをその結果の値に置き換えてもプログラムの意味が変わらない性質を指します。純粋関数型言語では副作用がなく、関数の出力は入力のみに依存するため、同じ引数なら必ず同じ結果を返します。これが参照透過性の本質です。
参照透過性とは、関数呼び出しをその結果の値に置き換えてもプログラムの意味が変わらない性質を指します。純粋関数型言語では副作用がなく、関数の出力は入力のみに依存するため、同じ引数なら必ず同じ結果を返します。これが参照透過性の本質です。
よくある誤解
参照透過性を「関数を引数に取れる」や「遅延評価」と混同しやすいですが、これらは別の特性です。副作用の有無に注目しましょう。
解法ステップ
- 参照透過性の定義を確認する
- 各選択肢の内容を参照透過性の定義と照らし合わせる
- 「同じ入力で同じ出力を返す」性質を示す選択肢を特定する
- 他の選択肢が別の特性(高階関数、型検査、遅延評価)であることを理解する
- 正解を選択する
選択肢別の誤答解説
- ア: 正解。参照透過性の定義そのものです。
- イ: 関数を引数や返却値にできるのは「高階関数」の特徴であり、参照透過性とは異なります。
- ウ: コンパイル時の型検査は「静的型付け」の特徴で、参照透過性とは関係ありません。
- エ: 式の評価を遅らせる「遅延評価」の説明であり、参照透過性とは別の概念です。
補足コラム
参照透過性はプログラムのテストや最適化を容易にします。副作用がないため、関数の呼び出しを結果の値に置き換えてもプログラムの動作が変わらず、並列処理やキャッシュ利用がしやすくなります。
FAQ
Q: 参照透過性があると何が良いですか?
A: プログラムの予測可能性が高まり、バグが減り、最適化や並列化が容易になります。
A: プログラムの予測可能性が高まり、バグが減り、最適化や並列化が容易になります。
Q: 参照透過性と副作用はどう違いますか?
A: 参照透過性は副作用がないことを意味し、副作用がある関数は同じ入力でも異なる結果を返す可能性があります。
A: 参照透過性は副作用がないことを意味し、副作用がある関数は同じ入力でも異なる結果を返す可能性があります。
関連キーワード: 参照透過性, 純粋関数型言語, 副作用, 高階関数, 遅延評価, 静的型検査