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(...)(并记录原因)。