在F#中使printfn / IO纯净

时间:2011-07-01 19:50:03

标签: .net f# functional-programming side-effects

似乎没有太多关于确保F#中的函数保持纯净的在线。

要创建一个示例,有没有办法在F#中使printfn / IO纯净?

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

根据定义打印到控制台会改变状态(控制台状态)并产生副作用(例如删除某些控制台缓冲区)。

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