【发布时间】:2011-09-27 00:19:04
【问题描述】:
网上似乎没有太多关于确保函数在 F# 中保持纯正的内容。
举个例子,有没有什么方法可以让 printfn/IO 在 F# 中变成纯的?
【问题讨论】:
标签: .net f# functional-programming side-effects
网上似乎没有太多关于确保函数在 F# 中保持纯正的内容。
举个例子,有没有什么方法可以让 printfn/IO 在 F# 中变成纯的?
【问题讨论】:
标签: .net f# functional-programming side-effects
打印到控制台是根据定义改变状态(控制台状态)并且确实有副作用(例如删除一些控制台缓冲区)。
如果您使用某种 CodeContracts 或类似的东西,您应该考虑在其他地方写出函数结果,或使用断言(Contract.Assume 或 Contract.Assert(用于静态断言))以便更轻松地确认您代码有效。
【讨论】:
您可以在 Google 上搜索 Haskell 的 IO monad 的 F# 实现。 Here 是一个很好的例子。
【讨论】: