Set, Sequence, Mapのコレクション演算の参照実装。
ビジネスの関心事をソフトウェア仕様として表現するためのコレクション型とその操作。
JavaのコレクションAPIは、実装や性能を重視した構成になっている。
また、mutableな設計になっている。
仕様記述のための論理性を重視したコレクションAPIを試作する。
- 集合(順序なし、重複なし)
- 列(順序あり、重複あり)
- 写像
- コレクション操作の基本語彙を明示する
- コレクションに閉じる(引数の型もメソッドの返す型も、コレクションまたはプリミティブ型に閉じる)
- 不変にする(演算結果は、別のコレクションを返す)
- コレクション生成はBuilderクラスに分離する(String/StringBuilderの関係)
- 巨大なコレクション操作を考慮しない
関心を分離するため、三種類の集合型を定義
- Group : 集合の基本操作(検査、集合演算、filter, map)
- NumericalGroup : 数値の集合の集約操作 (sum, average, max, min)
- ReducibleGroup : 単一要素の集合(単集合)へ畳み込む操作(reduce)
コレクション操作の基本語彙の参考仕様
- VDM++ コレクション
- Smalltalk コレクションライブり