gpt4 book ai didi

haskell - 在 Haskell 文件中使用 main

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

我已经使用 GHCI 在 Haskell 中完成了相当多的编程,但是我们的下一个任务要求我们只使用 GHC 来编译和测试我们的代码。
由于与 ghc 相比 ghci 的工作方式,您显然需要使用 main函数,ghc 在您的代码中查找此函数。
我的问题是,如果 Haskell 促进类型安全并且没有副作用,除非在 IO 内行动,为什么任何haskell程序的主要部分都必须是IO行动?
如果我不理解一些基本的东西,请原谅我,我只是找不到任何资源来最终解释这一点。

最佳答案

如果您的 main函数不是 IO行动,那么它所能做的就是产生结果。由于 Haskell 是惰性的,这(通常)意味着它只是产生一个将执行计算的 promise ,但在需要使用它之前不会计算它。由于确保计算某些内容的通常方法是打印该值,或通过网络发送它,将其保存到磁盘,或将其用于其他类型的 IO,因此不会计算您的结果,程序将简单地导出。想象一个像这样的假程序

main :: Int
main = 1 + 1

假设您可以编译并运行它,您希望发生什么?没有打印任何内容,也没有要求 main 的结果,Haskell 所能做的就是创建 1 + 1 的 promise 。将在某个时候计算然后退出程序。基本上,如果没有 IO,你就不能在顶层做任何有趣的事情,而且由于我们希望程序做有趣的事情,我们需要我们的顶层是一个 IO行动。

关于haskell - 在 Haskell 文件中使用 main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29825442/

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