Knowledge<T>
Sounio のエピステミック値型: 明示的 unwrap、黙って不確かさを捨てない。
Knowledge<T>
Knowledge<T> は Sounio のエピステミック値型です。値に対して「どれくらい確からしいか」を表すメタデータを組にして扱います。
いま動くこと(コンパイラの現状)
Knowledge<T> を構築し、下の値 T を 明示的に 取り出せます:
fn main() with IO {
let k = Knowledge { value: 42.0 }
// Explicit extraction requires a reason string.
let x: f64 = k.unwrap("accepted for demo")
if x == 42.0 {
print("knowledge_unwrap: PASS\n")
} else {
print("knowledge_unwrap: FAIL\n")
}
}
重要なのは 黙って unwrap できない ことです。エピステミック情報を捨てる理由をコードが示す必要があります。
仕様 / stdlib 設計(完全なモデル)
言語仕様と stdlib 設計では、Knowledge<T> が少なくとも次を持つことを目指します:
- 点推定(
value: T) - 不確かさ(例: 分散)
- 信頼度/信用度
- 来歴(どこから来て、どう変換されたか)
いくつかのフィールドや伝播ルールが、すべてのコンパイラモードで強制されていなくても、stdlib のエピステミックモジュールや仕様にはより豊かなモデルが現れます。
実用的な指針
- できるだけ
Knowledge<T>のままパイプラインを通す。 - 本当に plain な
Tが必要な境界でだけunwrap(...)し、その理由を残す。