comparison 設計
comparison は src/comparison.mbt にある区間ヘルパー clamp と is_between を保持します。このページでは、両者が共有する約束と、保守者が安定に保つべき挙動を記録します。
約束
- どちらの関数も値を最初に受け取り、その後に境界を
min、maxの順で受け取る。 - 区間は閉区間であり、境界に等しい値は区間に含まれる。
- 制約は
Compareだけなので、これらの関数は luna-generic に依存せず、Stringを含む任意の順序付きの型に使える。 - 境界は検証しない。
min > maxのときもどちらの関数も中断せず、その場合の戻り値は API リファレンスに記載している。
整合性
min <= max のとき、is_between(v, min, max) が true になるのは、clamp(v, min, max) が v を返すときに限られる。どちらかの関数を変更するときは、この関係を保たなければならない。
保守メモ
- 関数を追加・削除したとき、あるいは制約や境界的な場合の挙動が変わったときは、このページと API リファレンス を更新し、
moon infoでsrc/pkg.generated.mbtiを再生成する。 - 境界の検証を導入すると上記の挙動が変わるため、導入する場合はここに記載する。