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

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.sioself-hosted/io/file_read.sioself-hosted/io/file_write.sio 是在 self-hosted 树中查看主机面向的 I/O 工作的明显位置。
  • self-hosted/check/effects.sio 是检查器应确保那些操作不会意外出现在纯上下文中。
  • examples/io/examples/ 下的小型固定件是查看当前用户示例的最佳位置。

指导

  • IO 放在程序边界,并尽可能保持其余管道纯净。
  • 如果文档示例从控制台或文件系统读取,应明确显示效果条款,而不是暗示它。
  • 使用 check 作为第一个证明边界声明正确的证据。