シラバス
入学のご案内履修登録

科目の概要

Scalaというプログラミング言語を用いて、関数型プログラミングの思考と技法を身につける。具体的には、関数や多相関数の設計、エラー処理、リスト操作や遅延ストリームの実装について理解を深める。最終目標として、パーサーコンビネーターのライブラリを実装し、自分だけのプログラミング言語を作れるようになることを目指す。

科目情報

履修想定年次
3年次
単位数
2単位
開講Q
1Q、3Q
科目区分
選択
授業の方法
オンデマンド科目
評価方法
確認レポート 50% , 単位認定試験 50%
科目コード
INF-3-C1-1030-002
到達目標
この授業を終了した時点で、学生はScalaを使った関数型プログラミングに対する深い理解を持ち、具体的なアプリケーション作成に活かすことができるようになることを目標とする。また、最終的にはパーサーコンビネーターのライブラリを作成し、自分のプログラミング言語を作るための基礎となるスキルを身につけることを目指す。
教科書・参考書
  • MartinOdersky著・LexSpoon著・BillVenners著『Scalaスケーラブルプログラミング第4版』インプレス、2021年MartinOdersky著・LexSpoon著・BillVenners著『AdvancedProgramminginScala』ArtimaInc、2023年MiranLipovaca(著)・田中英行(翻訳)・村主崇行(翻訳)『すごいHaskellたのしく学ぼう!』オーム社、2017年
授業時間外の学修
各回の授業内容は繰り返し見返し、各回二時間ほど復習を行ってください。また、次回の学修内容についてもあらかじめ不明な単語や前提となる知識をWebで調べるなどして各回三時間ほど予習を行ってください。
特記事項
順次公開予定

授業計画

1
Scalaで解く素因数分解

Scalaで素因数分解を解き、コレクションと再帰関数の利用方法を知る。

2
Scalaで解く部分和問題

Scalaで部分和問題を解き、全探索とビット演算子の活用法を理解する。

3
関数

関数型プログラミングの基本である関数や無名関数を身につけ、末尾再帰最適化を理解する。

4
型パラメータと変位指定

型パラメータ、共変、多相関数について学び、型推論を理解する。

5
エラー処理

Javaのエラー処理とそれに対するScalaの解決策であるOptionについて学び、リファクタリングの手法を知る。

6
より高度なエラー処理

Optionとは異なるエラー処理の手法であるEitherとTryについて学び、最適な選択をする理解を深める。

7
コレクション

Scalaのコレクションやシーケンス、集合、連想配列について学び、それらの特性と使用時の選択基準を理解する。

8
リストの操作

リスト操作を学び、リストの結合や要素への関数適用について理解を深める。

9
ストリーム

ストリームと遅延評価について学び、無限ストリームや正格関数・非正格関数の理解を深める。

10
暗黙

暗黙とその用途について学び、暗黙の型変換や暗黙引数の使用について理解を深める。

11
テスト

テストの分類と方法を学び、ユニットテストの作成とコードカバレッジの測定を体験する。

12
Scala の文法の落ち穂拾い

Scalaの様々な文法要素、パターンマッチ、型エイリアス、各種リテラルなどを学び、より深い理解を得る。

13
パーサコンビネーター

パーサコンビネーターを学び、関数としてのパーサを理解し、自作のパーサの作成を試みる。

14
パーサコンビネーターで作る JSON パーサ

パーサコンビネーターを使ってJSONパーサを作り、コンビネーターライブラリを利用する。

15
DSL を作る

最終的に、DSLの作成を学び、チャットボットの動きを定義する内部DSLを作成する。

関連科目