在 F# 中使 printfn/IO 变得纯粹

发布于 2024-11-18 03:28:20 字数 77 浏览 2 评论 0原文

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

举个例子,有没有办法让 printfn/IO 在 F# 中变得纯粹?

There doesn't seem to be much online on making sure functions remains pure in F#.

To create an example, is there any way to make printfn/IO pure in F#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时间海 2024-11-25 03:28:20

你可以在 google 上搜索 Haskell IO monad 的 F# 实现。 这是一个很好的例子。

you can google for F# implementations of Haskell's IO monad. Here's a nice example.

自演自醉 2024-11-25 03:28:20

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

如果您使用某种 CodeContracts 等,您应该考虑在其他地方写出函数结果,或者使用断言(Contract.AssumeContract.Assert(这用于静态断言))以便更轻松地确认您代码有效。

Printing to the Console is per definition something that changes state (console state) and do have side-effects (like deleting some of the console buffer).

If you are using somekind of CodeContracts or the like you should consider writing out the function result somewhere else, or using an assertion (Contract.Assume or Contract.Assert(this is used for static assertions)) for easier confirmation that you code works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文