[英]Making printfn/IO pure in F#
网上似乎没有太多关于确保 F# 中的功能保持纯正的内容。
举个例子,有什么办法可以让 F# 中的 printfn/IO 纯?
你可以用谷歌搜索 Haskell 的 IO monad 的 F# 实现。 这是一个很好的例子。
根据定义,打印到控制台会改变 state(控制台状态)并且确实有副作用(例如删除一些控制台缓冲区)。
如果您正在使用某种 CodeContracts 或类似的东西,您应该考虑在其他地方写出 function 结果,或使用断言( Contract.Assume或Contract.Assert (这用于 static 断言)),以便更轻松地确认您的代码是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.