2025 年度「プログラミング言語論 Ⅱ」テスト

解答上、その他の注意事項

問題

以下の問に答えよ。

Ⅰ. (Haskell プログラミング問題)

IO モナドを利用して、main 関数を持つ、以下のような Haskell プログラムを作成せよ。

ヒント: getContents を、lines, unlines, words, unwords などと組み合せて使う。

  1. (必須) (12 点)
    提出ファイル名: Baz.hs

    入力文字列の行ごとに奇数番目の単語のみ出力するプログラム

    注意: 通常は “単語” には「,」や「.」 などの句読点は含まれないが、この問では、空白(タブ、改行を含む)以外の文字が連続するものと 解釈せよ。

    入力例

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
    minim veniam, quis nostrud exercitation ullamco laboris nisi ut
    aliquip ex ea commodo consequat. Duis aute irure dolor in
    reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
    culpa qui officia deserunt mollit anim id est laborum.
    

    出力例

    Lorem dolor amet, adipiscing sed
    eiusmod incididunt labore dolore aliqua. enim
    minim quis exercitation laboris ut
    aliquip ea consequat. aute dolor
    reprehenderit voluptate esse dolore fugiat
    pariatur. sint cupidatat proident, in
    culpa officia mollit id laborum.
    
  2. (必須) (12 点)
    提出ファイル名: Qux.hs

    入力文字列中の、母音字 (aiueoAIUEO) から始まる単語のみを出力する。

    注意: 通常は “単語” には「,」や「.」 などの句読点は含まれないが、この問では、空白(タブ、改行を含む)以外の文字が連続するものと 解釈せよ。

    入力例

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
    minim veniam, quis nostrud exercitation ullamco laboris nisi ut
    aliquip ex ea commodo consequat. Duis aute irure dolor in
    reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
    culpa qui officia deserunt mollit anim id est laborum.
    

    出力例

    ipsum amet, adipiscing elit,
    eiusmod incididunt ut et aliqua. Ut enim ad
    exercitation ullamco ut
    aliquip ex ea aute irure in
    in esse eu
    Excepteur occaecat in
    officia anim id est
    

Ⅱ. (記述問題)

  1. (必須)語句: (13 × 2 点)
    提出ファイル名: toi0201a.txt, toi0201b.txt

    プログラミング言語(やその処理系)で用いられる次の 6 つの語句のう 2 つを選択し説明せよ。その際、実際に動作するソースコードなど、 具体的な例を挙げよ。ただし、講義プリントにのっている例 やネットで見つかる例そのままではなくオリジナルの例を考えること。

    • 抽象構文 (abstract syntax)

    • 動的束縛 (dynamic binding)

    • カプセル化 (encapsulation)

    • 非決定性 (nondeterminism)

    • 接続 (あるいは継続) (continuation)

    • 多相 (polymorphism)

  2. (ボーナス問題)自由記述: (最高 20点)
    提出ファイル名: toi0202.txt

    AI(人工知能)技術の進化により、プログラミング(コーディング)作業の一部、あるいは大部分を AI に任せることが可能になった。 バイブコーディング (vibe coding) という、自然言語で「こんな感じ」「こんな雰囲気」と伝えるだけで、アプリを開発する手法も広まっている。 このように AI がソースコードの大部分を生成することが可能になった中で、その問題を最大限抑える、あるいは逆に長所を最大限伸ばすために、 どのようなプログラミング言語が必要とされるようになるか、大胆に予測してみよ。


Koji Kagawa