效果系统
代数效果与处理程序:检查、推断和运行时分派。
效果系统
效果系统位于语言设计与实际实现之间的交叉点。全面页面需要承认自托管的树中专门的效果子系统,同时保持公开的教学合同集中在显式的 with ... 子句上。
当前源图
self-hosted/check/effects.sio覆盖效果感知语义检查。self-hosted/effects/types.sio、checker.sio和handlers.sio展示了专门的自托管实现拆分。docs/architecture/EFFECT_HANDLERS_IMPLEMENTATION.md仍然作为更广泛的设计参考资料有用,但实施真相应来自当前树并经过验证的行为。
公共文档应强调的内容
- 效果在函数签名中显式。
IO效果仍然是用户的日常例子中最清晰的一个。- 更丰富的处理程序架构存在于仓库和设计文档中,但不是每条路径都应该在已检查的公共产物中呈现为同样验证过的。
签名级别的效果跟踪
fn read_config(path: string) -> string with IO {
read_line()
}
贡献者指引
- 如果你正在追踪效果行为,请从自托管的检查器文件开始,然后步入专门的效果模块。
- 如果你正在编写用户文档,不要跳过签名级别的合同,仅仅因为底层实现更复杂。
- 如果你正在文档处理程序,请明确你是在描述当前已检查的路径还是更全面的设计空间。