プログラミング言語論 第2回レポート


  1. (Prolog)

    プリントp.Ⅴ-6 問5.4.2

    参考: 問5.4.1の解答例

    ?- append([1,2], [3,4], X).
    これに対して、 append([H1|X1], Y1, [H1|Z1]):- append(X1, Y1, Z1). が、
    H1=1, X1=[2], Y1=[3,4], X=[1|Z1] で適用できる。

    ?- append([2], [3,4], Z1).
    これに対して、 append([H2|X2], Y2, [H2|Z2]) :- append(X2, Y2, Z2). が、
    H2=2, X2=[], Y2=[3,4], Z1=[2|Z2] で適用できる。

    ?- append([], [3,4], Z2).
    これに対して、 append([], Y3, Y3). が、
    Y3=[3,4], Z2=[3,4] で適用できて、ゴール節が消える。

    まとめると、 X = [1|[2|[3,4]]] (= [1,2,3,4])


  2. (CPSへの変換)

    プリントp.Ⅶ-6 問7.4.1
    このHTMLファイルを元にして下さい。

  3. (オブジェクト指向言語の調査)

    一般的に使われているオブジェクト指向言語(WikiPediaのページなどを参考にすること)から1つ言語を選び(ただし Javaは除く)、 動的束縛・継承を使用しているプログラム例を作成せよ。 (継承の概念がない場合は、それに代わる特徴を使用せよ。)

  4. (チャレンジ(非必須)問題)

    3. で調べた言語に他の言語にはみられない特有の特徴があれば、それを利用したプログラム例を作成せよ。

3, 4についての注:
プログラミング言語特論のホームページ
Koji Kagawa (kagawa@eng.?????)