2025 年度 後期木曜日 2コマ・原則として遠隔(ペーパーテスト実施時は
6405 教室)
担当: 香川 考司
対象: 大学院・創発科学研究科
創発科学研究科の第 3 Q「プログラミング言語論Ⅰ」(1 〜 8 週、シラバス)/ 第 4 Q「プログラミング言語論Ⅱ」(9 〜 16 週、シラバス) のホームページです。 受講者はこのページを随時チェックするようにしてください。
新しいものほど上に表示します。
(10/02) この授業は原則として、遠隔で実施します。(この授業の Teams のチャネル)
(10/02)
(10/02) paiza.io ブラウザーからプログラムが実行できる、 オンライン実行環境です。Haskell も対応しています。
その他のオンライン実行環境:
オンライン実行環境(プログラミング言語別)
(10/02) Haskell をインストールしておいてください。 (現時点では GHCup を使用するのが推奨です。)
ここにリンクをはっていないファイルや、公開日前のファイルは 公開日までに変更する可能性があるので注意してください。
以下の第 1, 2, A, 3 章をまとめた PDF
以下の第 4, L, 5, U, 6, P, S, J, 7 章をまとめた PDF
grandchild(X, ieyasu).
myappend(X, Y, [1,2,3]).
パスワードのかかっているページは、 Microsoft アカウント(大学でメールを読むときに使うアカウント)で認証してください。
注意: 設定が変更されたのに、変更が反映されないときは、 いったんログアウトして、 再度アクセスを試みて下さい。
これより以前はありません。
「プログラミング言語論Ⅰ/Ⅱ」は原則として、遠隔で実施します。 この Teams のチャネルから、その日の日付の「会議」を授業時間(直前)になったらクリックしてください
紹介スライド,
1 章 「プログラミング言語論の概要」,
Haskell のダウンロード、
2 章 「関数型言語 Haskell とは」(§ 2.1 〜 § 2.4.1「基本的なデータ型と演算子」)
2 章 「関数型言語 Haskell とは」( § 2.4.2 「リスト」 〜 )
2 章 「関数型言語 Haskell とは」(§ 2.5「パターンマッチング」〜 § 2.8「関数の中置記法化」)
課題、 アップロード、10/30 は月曜振替日です。
2 章 「関数型言語 Haskell とは」(§ 2.9「部分適用とセクション」〜 § 2.12「リストの内包表記」)
課題、 アップロード、2 章 「関数型言語 Haskell とは」(§ 2.12「リストの内包表記」〜 )、
3 章「代数的データ型と型クラス」(〜 § 3.1「代数的データ型の定義」)
中間試験・過去問
ただし今年度は、すべてオンラインで実施する予定です。そのため、昨年度にペーパー試験で実施していた問題は少し趣向をかえます。
3 章「代数的データ型と型クラス」(§ 3.2 「型クラスとは」〜)
課題、 アップロード、3 章「代数的データ型と型クラス」(§ 3.8 「型クラスとサブタイピング」〜)、 A 章「Haskell のレイアウトルール」、
オンラインテスト問題 (Online Questions, English vers.)、 アップロード (upload)、
4 章「モナド」
課題、 アップロード、5 章「モナドと命令形言語の意味」、 U 章「ちっちゃな命令型言語 Util」、
課題、 アップロード、5 章「モナドと命令形言語の意味」(§ 5.5 〜)、 U 章「ちっちゃな命令型言語 Util」、 P 章「Prolog 超簡易入門」、 Try Prolog,
課題、 アップロード、5 章「モナドと命令形言語の意味」(§ 5.8 〜)、 P 章「Prolog 超簡易入門」、 6 章「接続」 (continuation)、 、
課題、 アップロード、?- myappend([1,2], [3,4], Zs0). |
これに myappend([H1|Xs1], Ys1, [H1|Zs1])
|
:- myappend(Xs1, Ys1, Zs1). が |
H1=1, Xs1=[2], Ys1=[3,4], Zs0=[1|Zs1] で適用できて |
?- myappend([2], [3,4], Zs1). |
これに myappend([H2|Xs2], Ys2, [H2|Zs2])
|
:- myappend(Xs2, Ys2, Zs2). が |
H2=2, Xs2=[], Ys2=[3,4], Zs1=[2|Zs2] で適用できて |
?- myappend([], [3,4], Zs2). |
これに myappend([], Ys3, Ys3). が |
Ys3=[3,4], Zs2=[3,4] で適用できてゴール節が消える |
まとめると Zs0 = [1|[2|[3,4]]] (= [1,2,3,4]) |
?- myconcat([[1, 2], [3, 4, 5], [6, 7]], Xs). |
これに ② が Xs1=[1,2], Xss1=[[3,4,5],[6,7]], Ys1=Xs
|
で適用できて |
?- myappend([1,2],Zs1,Xs), myconcat([[3,4,5],[6,7]],Zs1). |
?- myappend([2],Zs1,Ws1), myconcat([[3,4,5],[6,7]],Zs1). |
ただし Xs=[1|Ws1] |
?- myappend([],Zs1,Ws2), myconcat([[3,4,5],[6,7]],Zs1). |
ただし Ws1=[2|Ws2] |
?- myconcat([[3,4,5],[6,7]],Zs1). ただし Ws2=Zs1 |
まとめると Xs=[1|[2|Zs1]] |
?- myconcat([[6,7]],Zs2). ただし Zs1=[3|[4|[5|Zs2]]] |
| ⋮ |
?- myconcat([],Zs3). ただし Zs2=[6|[7|Zs3]] |
これに対して ① が Zs3=[] で適用できゴール節が消える |
まとめると Xs=[1,2,3,4,5,6,7] |
6 章「接続」 (continuation)、 U 章「ちっちゃな命令型言語 Util」、 S 章「Scheme 超簡易入門」 (同・空欄補間済版)、 J 章「JavaScript 超簡易入門」(〜 § J.2)
課題、 アップロード、L 章「ラムダ計算」L 章の配布プリントを 12/23 に修正しました。12/23 以前にダウンロードした人は再ダウンロードしてください
01/29 は、オンデマンドで実施します。第 15 週 (02/05) の授業の前までに ラムダ計算のスライド を閲覧してください。
J 章「JavaScript 超簡易入門」(§ J.3 〜) 7 章「Continuation-Passing Style (CPS)」、 7 章のプログラム
課題、 アップロード、また、まだの人は 1/29 の課題 もやってください。(2/10 23:59 まで締め切りを延長しました。)
「プログラミング言語Ⅱ」レポート(2/19 締切)
授業評価アンケート
昨年度の問題は 2024 年度「プログラミング言語論Ⅱ」の期末試験の問題を見てください。
02/12 の期末テストは、遠隔で実施します。必ず Teams の会議に参加してください。
着席位置、 オンラインテスト問題 (Online Questions, English vers.) 、 アップロード、これ以降の予定はありません。🐻🐼