SAシステムアーキテクト試験 午前Ⅱ

令和6年度春期 システムアーキテクト 午前Ⅱ 問8

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

純粋関数型言語がもつ特性の一つである参照透過性の説明はどれか。

選択肢

  1. ア
    同じ引数を渡せば,関数は常に同じ結果を返す。
  2. イ
    関数を引数とすることや返却値とすることができる。
  3. ウ
    コンパイル時に型検査を行い,型誤りがないことを保証する。
  4. エ
    実際に評価が必要になるまで式の評価を行わない。
解き方のヒントを見る

用語が何の性質を述べているかを見極める

プログラミング言語の特性を表す用語は、名称が似ていても説明している対象が異なることがあります。各用語が何についての性質を述べたものかを自分の言葉で言い直し、その対象と記述内容が一致しているかを照らし合わせて判断しましょう。

この問題で問われていること

この問題で絞るべき観点は一つ、「その用語が指している性質の主語は何か」です。用語の名前から受ける印象ではなく、その性質が成り立つ対象と条件を明確にし、提示された内容がそれと食い違っていないかを確かめてください。

視点

言語の特性を表す用語は、それぞれ「何が」「どういう条件で」「どうなる」という形で定義されています。用語を区別するときは、名前の字面や日常語としての意味に頼らず、この三つを分けて整理すると混同を防げます。特に「何が」にあたる対象を取り違えると、内容がもっともらしく見えても別の用語の説明になってしまうことがあります。学習時は、一つの用語について自分で短い定義文を作り、主語を入れ替えても意味が通るかを試すと、用語ごとの違いがはっきりします。

確認ポイント

  • 各用語について、その性質が成り立つ対象(主語)を自分の言葉で一文にして言えるか確認する
  • 提示された内容の主語や対象が、その用語の定義で想定している対象と一致しているかを照らし合わせる
  • 名前の響きや日常語の意味から連想した理解になっていないか、定義に立ち返って見直す
正解と解説を見る

正解

ア

解説

参照透過性とは、同じ入力を与えた関数が、外部状態や副作用に影響されず常に同じ結果を返す性質です。純粋関数型言語の重要な特徴の一つです。

理由

参照透過性が成り立つ式は、評価結果で置き換えてもプログラムの動作が変わらない。同じ引数から同じ結果が得られるため、式の評価を独立して扱いやすくなる。

比較

関数を引数や返却値にできる性質は高階関数、コンパイル時の型検査は静的型付け、必要になるまで評価しない性質は遅延評価に関する説明です。

選択肢ア(正解)

これは正解だよ。同じ引数に対して常に同じ結果を返すという説明は、関数の評価結果が外部状態や副作用によって変化しないことを表している。式をその結果で置き換えても意味が変わらないという参照透過性の核心に一致する。

選択肢イ

これは不正解だよ。関数を引数にしたり、関数を返却値にしたりできるという説明は、関数を値として扱う高階関数の性質を示している。参照透過性が示す、同じ入力に対する評価結果の一定性を直接説明していない。

選択肢ウ

これは不正解だよ。コンパイル時に型検査を行い、型誤りがないことを確認する説明は、静的な型検査や型システムに関する性質である。参照透過性は型の正しさではなく、式の評価結果を置き換えられることに関する性質である。

選択肢エ

これは不正解だよ。実際に評価が必要になるまで式の評価を行わないという説明は、遅延評価の性質を表している。参照透過性は評価する時期の問題ではなく、同じ入力から得られる結果が変わらないことに関する性質である。

学習のポイント

参照透過性と高階関数、静的型検査、遅延評価を区別して理解する。

出典:独立行政法人 情報処理推進機構(IPA)令和6年度春期 システムアーキテクト試験 午前Ⅱ 問8(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針