関数型プログラミング言語 Haskellの理論と応用
(2007年度・集中)
香川大学工学部
香川 考司
「関数型プログラミング言語 Haskellの理論と応用」のホームページです。
概要
本講義では、関数型プログラミング言語Haskellについて、その理論的基礎か
ら実際的な応用までを解説する。Haskellは、副作用を持たない、CやJavaなど
いわゆる“主流(メインストリーム)の言語”とは一風変わったプ
ログラミング言語である。また、強力な型システムを持つことも大きな特徴で
ある。本講義では、おもに次のようなトピックについて説明する。
- 遅延評価
- 型クラス
- リスト内包表記とモナド
- パーサコンビネータ
さらに時間が許せば、総合演習として命令型ミニ言語のインタプリタの作成を
行なう。
受講に際しては、ラムダ計算に関する基本的な知識があること、また、Scheme
やMLなどの関数型プログラミング言語を使用した経験があることが望ましい。
日程
- 6/11(月) 13:30 〜 16:40ころ
- 6/12(火) 13:30 〜 16:40ころ
- 7/09(月) 13:30 〜 16:40ころ
- 7/10(火) 13:30 〜
配布物とプログラム
- 第1章 関数型言語 Haskellとは
第1章のプログラム: Chapter1.hs
- 第2章 型クラス
第2章のプログラム: Chapter2.hs
- 第3章 モナド
第3章のプログラム:
-
ToUpper.hs(IOモナドの使用例),
RefTest.hs(参照型の使用例),
- Utilシリーズ
Token.hs(以下のすべてのプログラムで使用),
- Util1Parser.hs,
Util1Type.hs,
Util1.hs(Util1),
Util1.utl(同テストプログラム),
-
ErrParser.hs,
ErrType.hs,
Err.hs(UtilErr),
Err.utl(同テストプログラム)
-
STParser.hs,
STType.hs,
ST.hs(UtilST),
ST.utl(同テストプログラム),
NewType.hs
-
IOParser.hs,
IOType.hs,
IO.hs(UtilIO),
IO.utl(テストプログラム),
Writer.hs
-
NonDetParser.hs,
NonDetType.hs,
NonDet.hs(UtilNonDet),
NonDet.utl(同テストプログラム),
-
ContParser.hs,
ContType.hs,
Cont.hs(UtilCont),
Cont.utl(同テストプログラム),
Goto.utl(同テストプログラム),
goto.c,
Callcc.utl(テストプログラム),
Callcc2.utl(テストプログラム),
- Monads.hs(Monadの例),
- 付録A Haskellのレイアウトルール
- 第4章 パーサコンビネータ
“Parsec, a fast combinator parser”
(第4章の元ネタ)
TinyCParser.hs(問 4.2.1の解答のテンプレート)
- 第5章 (おまけ)Haskellの Sexy Type
課題
レポート
- 問 1.11.1(第1章 p.14)
- 問 1.11.2(同上)
- 問 1.11.4(同上)
- 問 1.12.2 (第1章 p.15)
- 問 2.3.1 (第2章 p.4)
- 問 2.4.1 (第2章 p.5)
- 問 3.8.1 (第3章 p.11)
- 問 4.2.1 (第4章 p.9) … TinyCParser.hs(問 4.2.1の解答のテンプレート)
以上の問(6問以上正解で合格とします)を解いて、
とともに一つのファイルにまとめ、香川あてにメールで送って下さい。
- メールアドレスは授業中通知しました。
(SPAM防止のためこのページには掲載しません。)
- メールの題名(Subject)は「レポート(関数型プログラミング言語 Haskellの理論と応用)」にして下さい。
- ファイル形式はプレーンテキストで構いません。TeXやワープロソフトで作成した場合は PDF形式にして送って下さい。
- 締切は 7/31(火)です。
リンク
Koji Kagawa