単位計算機
Haskell で書き直したい!!
大学の必要単位の計算をしたい
要件
入力は twins からダウンロードできる csv
出力は単位の取得状況
存在
卒業要件
卒業に必要な単位の要求条件
部分要件による入れ子構造
部分要件
卒業要件を構成する条件
要求するものが科目区分であったり、科目コードであったり、講義名であったりする
要求が科目区分
「基礎科目」「専門科目」などを要求する
要求が科目コード
「科目コードが GA1 から始まる科目」などと要求する
要求が講義名
「プログラミング入門」などと要求する
データ構造
Requirements
label: String
filter: Filter?
この部分要件の対象科目
^プログラミング入門$ ^GB1.* ^線形代数B|線形応用$のように指定する
credit: Float
必要単位
acquired_credit: Float
取得単位
ok: Boolean
Fetch的な
acquired_credit >= creditならTrue
followed_by: Path
ここで指定された部分要件の後に計算される
children: Requirement[]
Filter
type: code | name
科目番号か講義名か
regular: String
正規表現
設計
単位計算
設定ファイル
要件
配列が使える
入れ子構造を書ける
卒業要件は入れ子構造であるため
ID などで入れ子構造を表現するのもいいが、視覚的ではない
コメントを書ける
単位についての説明などがほしい
フォーマッターがあるもの
フォーマットしたい
簡単に書ける
設定ファイル候補
JSON
コメントが書けない
YAML
記法が簡素なので階層が分かりにくく、入れ子構造が深くなると見づらいかも
TOML
標準で対応している言語が少ない
数字のアンダーバーなど細かい嬉しい機能が多い
JSON5
コメント書ける
嬉しい
技術選定
Rust
CLI で実装したいため
WebAssembly
正直 Rust を書きたいだけ