IO
控制台及文件系统输入输出,通过 `IO` 效果进行追踪。
IO
IO 效果是最实用的效果,因为它出现在简单程序、shell 示例和编译器入门中。它也是展示 Sounio 所说的“效果应该属于签名”的最明显例子。
当前合约
- 控制台输出应位于公共示例的
with IO下。 - 从纯函数调用使用
IO的辅助函数应被文档化为类型或效果边界的错误,而不是无害的风格。 - 检查项和文档都将
IO视为明确跟踪效果的最明显例子。
IO 边界
fn read_name() -> string with IO {
read_line()
}
fn main() with IO {
println("Enter your name:")
let name = read_name()
println(name)
}
仓库地图
self-hosted/io/stdio.sio、self-hosted/io/file_read.sio和self-hosted/io/file_write.sio是在 self-hosted 树中查看主机面向的 I/O 工作的明显位置。self-hosted/check/effects.sio是检查器应确保那些操作不会意外出现在纯上下文中。examples/io/和examples/下的小型固定件是查看当前用户示例的最佳位置。
指导
- 将
IO放在程序边界,并尽可能保持其余管道纯净。 - 如果文档示例从控制台或文件系统读取,应明确显示效果条款,而不是暗示它。
- 使用
check作为第一个证明边界声明正确的证据。