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> 不变地传递。
  • 仅在确实需要普通 T 的边界使用 unwrap(...)(并记录原因)。

下一步