网上似乎没有太多关于确保函数在 F# 中保持纯正的内容。
举个例子,有没有办法在 F# 中使 printfn/IO 成为纯的?
网上似乎没有太多关于确保函数在 F# 中保持纯正的内容。
举个例子,有没有办法在 F# 中使 printfn/IO 成为纯的?
你可以用谷歌搜索 Haskell 的 IO monad 的 F# 实现。这是一个很好的例子。
根据定义,打印到控制台会改变状态(控制台状态)并且确实有副作用(例如删除一些控制台缓冲区)。
如果您使用某种 CodeContracts 或类似的东西,您应该考虑在其他地方写出函数结果,或者使用断言(Contract.Assume或Contract.Assert(用于静态断言))以便更容易地确认您的代码是否有效。