型システムと関数型言語

担当教員

  • 登内 敏夫?

授業の到達目標及びテーマ

プログラミングパラダイムの一つの大きな柱として、関数型プログラミング言語があります。関数型プログラミングは、java や c 等の手続き型プログラミングに比して、高階関数など強力な機構を有します。本講義では、近年注目を浴びている関数型言語 scala を通じて関数型プログラミングスタイルを身につけることを目標とします。また、型システムによりプログラムの正しさを検査することが可能なことを学びます。

授業の概要と方法

講義及び、関数型プログラミング言語 scala を用いた演習を通じて、関数型プログラミングの使い方を身につけます。さらに、高階関数やクロージャ等の関数型言語の特徴的な機構について演習します。そして、型システムについて、関数型言語及びオブジェクト指向言語の両面から解説いたします。

授業計画

前期

テーマ内容
1 関数型言語の概要 関数型言語の歴史と位置づけを学ぶ。また、演習で使用する関数型言語scala をインストールする。
2 関数型言語 scala を使う 簡単なプログラミングを通して、scala の動かし方を学ぶ。
3 関数型言語のプログラミングスタイル 再帰関数など関数型言語のプログラミングスタイルを学ぶ。
4 高階関数・無名関数 関数型言語が有するプログラミング機構の一つである高階関数について学ぶ。
5 末尾再帰 末尾再帰を利用することにより、少ないメモリでプログラムの実行が可能であるこを学ぶ。
6 遅延評価、クロージャ 遅延評価やクロージャ等のプログラミング機構により、制御構造を新たに定義できることを学ぶ。
7 型システムとは 型システムと、動的な型検査と静的な型検査の違いとについて学ぶ。
8 関数のデータ型 関数のデータ型と型検査の仕組みを学ぶ。
9 多層型と 型パラメータ 多層型を用いることにより、型検査によるプログラムコードの正当性の担保と、プログラムコードの再利用性の向上が両立することを学ぶ。
10 型推論 型システムにおけるコード記述量を減らすことを可能にする型推論について学ぶ。
11 オブジェクト指向言語としての scala scala のオブジェクト指向言語としての側面を学ぶ。
12 継承による型多層 オブジェクト指向言語の型システムの特徴である継承による型多層について学ぶ。
13 型変数クラス オブジェクト指向言語における型パラメータについて学ぶ。
14 まとめ これまでの授業の概要を振りかえるとともに、関数型の言語の特徴と型システムの位置づけを学ぶ。
15 試験 関数型言語と型システムについて理解度を、試験により確認する。

授業外に行うべき学習活動

授業の中では、プログラミングのような具体的な内容も教えるが、復習として、授業内で学んだプログラミング手法を自分自身で試用してみて、実際の操作方法を学ぶこと。

テキスト

オンラインテキスト

参考書

Scalaスケーラブルプログラミング - コンセプト&コーディング
Martin Odersky/(他)著 長尾 高弘/訳
インプレスジャパン, 4600円
978-4-8443-2745-5

成績評価基準

期末試験の成績(75%)
授業への参加(15%)
レポート提出(10%)

情報機器使用

ネットワークを利用
演習にはノートPC を用いる