gpt4 book ai didi

haskell - 使用 IO monad 编写大部分代码可以吗

转载 作者:行者123 更新时间:2023-12-02 08:03:53 26 4
gpt4 key购买 nike

我正在尝试使用 Haskell 开发一个聊天服务器。

有很多有用的工具,例如 TChanTSkiplistforkIO ...等,但事实证明我的大部分工具代码写在IO monads和unsafePerformIO里面,听起来效率很低。

这样做可以吗?或者 haskell 不是用于此目的的正确工具吗?

最佳答案

作为一般规则,尝试首先将代码编写为纯函数,而不用担心数据来自哪里 - 只需假设它在那里。

接下来将纯函数包装在 IO 中,以提供纯函数数据并将结果放在某处。在聊天应用程序中发生很多这样的事情是正常的! IO monad 的效率一点也不低,只是我们更喜欢保留尽可能多的代码,因为这是很好的设计 -将数据处理与 IO 分开。聊天应用程序不会对其获取的数据进行大量计算,因此拥有大量 IO 代码是可以的。

我认为坚持使用 IO monad 肯定比使用 unsafePerformIO 更好,因为 unsafePerformIO 有点将其结果呈现为纯数据。我可能使用它从配置文件中获取常量,但我从未真正这样做过,而且如果您大量使用 IO monad 的话就没有意义。它被称为不安全是有原因的! Petr Pudlák 在下面的评论中提出了很好的建议。

我听说 Haskell 的 monad 被描述为 best imperative programming language在里面世界。我可以对这个描述吹毛求疵,但我同意这种观点,是的,坚持使用 haskell 。 Haskell 擅长您使用它进行的编程。

关于haskell - 使用 IO monad 编写大部分代码可以吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com