呢一頁仲未翻譯。英文版本為準。 睇英文版 →

效果

使用 `with IO`, `with Panic`, `with Async`, 以及自定义效果,使副作用明确。

效果

效果仍然是 Sounio 最具定义性的理念之一。目前最清晰的合同是简单的:副作用应包含在类型签名中,而纯计算应尽可能地与效果边界分开。

今日的固体

  • 已检查的制品以语言特性形式广告代数效果和处理程序。
  • 公共文档应将显式的 with ... 子句视为真实的、用户可见的语法,而不是内部细节。
  • 对于日常程序,最重要的具体效果仍然是 IO,因为它出现在简单示例和公共固定件中。

基本模式

fn double(x: i32) -> i32 {
    x * 2
}

fn greet() with IO {
    println("Hello")
}

工作在仓库中的位置

  • self-hosted/check/effects.sio 处理效果感知检查的自托管路径。
  • self-hosted/effects/types.sio, self-hosted/effects/checker.sio, 和 self-hosted/effects/handlers.sio 映射到专用的效果实现表面。
  • docs/architecture/EFFECT_HANDLERS_IMPLEMENTATION.md 对于更广泛的设计上下文仍然有用,但实施真相应来自当前自托管树和检查固定件。

如何准确地记录效果

  • 首先记录显式签名要求。
  • 除非您有当前固定件证明您声称的确切行为,否则描述更丰富的处理程序语义作为设计加实现工作。
  • 将效果逻辑放在例子边缘,以便读者可以看到纯转换与真实世界交互之间的区别。