プログラミング・パラダイム
プログラミング言語意味論
(2020年度 Q3, Q4)
2020年度 後期木曜日 1コマ
担当: 香川 考司
対象: 大学院・工学研究科・信頼性情報システム工学専攻
工学研究科、プログラミング・パラダイム(シラバス)/プログラミング言語意味論(シラバス)
(旧・プログラミング言語特論)のホームページです。
受講者はこのページを随時チェックするようにしてください。
現在✨ へ
連絡事項
新しいものほど上に表示します。
(02/16 New!) 2020 年度「プログラミング言語意味論」テストの問題と、解答例 (一部) を公開します。
(02/04)「プログラミング言語意味論」レポート
(〆切 2/18(木) 18:00)
(12/03)
2019 年度「プログラミング言語意味論」テストの問題と、解答例 (一部) を公開します。
(10/08)
paiza.io ブラウザーからプログラムが実行できる、
オンライン実行環境です。Haskell も対応しています。
その他のオンライン実行環境:
オンライン実行環境(プログラミング言語別)
-
(10/08)
GHC.IO ブラウザーから実行できる GHCi です。
外部サイトなので、重いプログラムを動かして迷惑をかけないようにしてください。
ファイルをロードできないので、変数や関数を定義するときは、
「let」 というキーワードに続けて書いてください。
Prelude> let square x = x * x
Prelude> square 2
4
定義の途中で改行できないので、複数行の定義をするときは、
改行の代わりに「;」で区切って書いてください。
Prelude> let fact 0 = 1; fact n = n * fact (n-1)
Prelude> fact 10
3628800
ある程度の時間入力がないと、タイムアウトするのでリロードしてください。
(10/08)
Haskell Platform
をインストールしておいてください。
配布物など
「プログラミング言語意味論」使用分
以下の第 4, L, 5, P, 6, S, J, 7 章をまとめた PDF
-
プリント第 7 章
Continuation-Passing Style (CPS)
プリント第 7 章のプログラム
-
ProdPrimes.html,
ProdPrimes.js(7.1),
Fact.html,
Fact.js
(7.2),
Hanoi0.html,
Hanoi0.js
(7.3 CPS書換え前),
Hanoi.html,
Hanoi.js
(7.3 CPS書換え後),
Fib0.html,
Fib0.js
(7.3 CPS書換え前)
Fib.html,
Fib.js
(7.3 CPS書換え後),
Sierpinski.html,
Sierpinski.js
-
プリント第 J 章
JavaScript 超簡易入門
-
プリント第 S 章
Scheme 超簡易入門
(空欄補完済版)
プリント第 S 章のプログラム
-
プリント第 6 章
接続 (continuation)
プリント第 6 章のプログラム
- Util 共通 (再掲):
Token.hs,
Target.hs,
- UtilCont:
ContType.hs,
ContParser.hs,
ContCompiler.hs,
ContMain.hs
-
いろいろなモナド:
MyState.hs (再掲),
MyStream.hs (再掲),
Cont.hs (UtilCont),
- UtilCont コンパイラー (Web 上で実行)
- Web 版 Util コンパイラー (New Version)
- Blockly 版 Util コンパイラー
-
foo.c,
bar.c,
baz.c
-
参考リンク:
なんでも継続,
継続 - Wikipedia
- プリント第 P 章
Prolog 超簡易入門
プリント第 P 章のプログラム
- プリント第 5 章
モナドと命令型言語の意味
プリント第 5 章のプログラム
- Util 共通:
Token.hs,
Target.hs,
- Util1, UtilST, UtilIO:
RecType.hs,
RecParser.hs,
RecCompiler.hs,
RecMain.hs
- UtilErr, UtilNonDet:
RecType.hs,
CatchParser.hs,
RecCompiler.hs,
CatchMain.hs
-
いろいろなモナド:
Id.hs (Util1),
MyState.hs (UtilST),
ST.hs (UtilST),
MyStream.hs (UtilIO),
MyIO.hs (UtilIO),
- Web 版 Util コンパイラー (New Version)
- Blockly 版 Util コンパイラー
- プリント第 L 章
ラムダ計算
- プリント第 4 章
モナド
プリント第 4 章のプログラム
「プログラミング・パラダイム」使用分
各週の内容
現在 ✨ へ
パスワードのかかっているページは、Gmail アカウント(大学でメールを読むときに使うアカウント)で認証してください。
注意:
設定が変更されたのに、変更が反映されないときは、
いったんログアウトして、
再度アクセスを試みて下さい。
必ず各自で提出したファイルのバックアップを取っておいて下さい。
(自分のノート PC だけではなく、stfile などの大学のサーバのどこかにもバックアップしておいて下さい!!)
各個人へのメッセージ、
過去
(← ここ以前の課題の開閉)
第 01 週 10/08
紹介スライド,
1 章 「プログラミング言語の意味とは」,
2 章 「関数型言語 Haskell とは」(〜§ 2.2),
第 02 週 10/15
着席位置、
課題、
アップロード、
2 章 「関数型言語 Haskell とは」(§ 2.3 〜 § 2.4—「String 型と type 宣言」)
第 03 週 10/22
着席位置、
課題、
アップロード、
2 章 「関数型言語 Haskell とは」(§ 2.4—「箱ポインター記法」〜 § 2.5「パターンマッチング」)
第 04 週 10/29
着席位置、
課題、
アップロード、
2 章 「関数型言語 Haskell とは」(§ 2.6「帰納法による証明」〜§ 2.10「局所的定義」)
第 05 週 11/05
着席位置、
課題、
アップロード、
2 章 「関数型言語 Haskell とは」(§ 2.11「Haskell の評価戦略」〜 2.12「リストの内包表記」)
第 06 週 11/12
着席位置、
課題、
アップロード、
2 章 「関数型言語 Haskell とは」(§ 2.13「8 クイーンの問題」〜 )、
A 章「Haskell のレイアウトルール」、
3 章「代数的データ型と型クラス」(§ 〜 3.2 「型クラスとは」)
第 07 週 11/19
着席位置、
課題、
アップロード、
3 章「代数的データ型と型クラス」(§ 3.3 「Haskell の型クラス」〜)
第 08 週 11/26(テスト)
テスト解答例
第 09 週 12/03(ここから「プログラミング言語意味論」)
着席位置、
課題、
アップロード、
4 章「モナド」
第 10 週 12/10
着席位置、
課題、
アップロード、
L 章「ラムダ計算」(〜 § L.4)
第 11 週 12/17
着席位置、
課題、
アップロード、
L 章「ラムダ計算」(§ L.5 〜)
第 12 週 12/24
着席位置、
課題、
アップロード、
5 章「モナドと命令形言語の意味」
第 13 週 01/21
着席位置、
課題、
アップロード、
5 章「モナドと命令形言語の意味」、
P 章「Prolog 超簡易入門」
第 14 週 01/28
着席位置、
課題、
アップロード、
6 章「接続」 (continuation)、
S 章「Scheme 超簡易入門」、
現在✨
第 15 週 02/04
着席位置、
課題、
アップロード、
J 章「JavaScript 超簡易入門」、
7 章「Continuation-Passing Style (CPS)」、
「プログラミング言語意味論」レポート
今後
第 16 週 02/15(テスト予定)
6405? で実施(要確認)
(← ここ以降の予定の開閉)
リンク
Koji Kagawa