1

网上似乎没有太多关于确保函数在 F# 中保持纯正的内容。

举个例子,有没有办法在 F# 中使 printfn/IO 成为纯的?

4

2 回答 2

8

你可以用谷歌搜索 Haskell 的 IO monad 的 F# 实现。是一个很好的例子。

于 2011-07-01T20:09:06.093 回答
0

根据定义,打印到控制台会改变状态(控制台状态)并且确实有副作用(例如删除一些控制台缓冲区)。

如果您使用某种 CodeContracts 或类似的东西,您应该考虑在其他地方写出函数结果,或者使用断言(Contract.AssumeContract.Assert(用于静态断言))以便更容易地确认您的代码是否有效。

于 2011-07-01T19:59:01.550 回答