Localized V2 rewrite for this language is in progress. Showing English-first content for now.

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(...) し、その理由を残す。

次へ