gpt4 book ai didi

haskell - 类型强制 "strict/imperitive"Haskell 子集/版本

转载 作者:行者123 更新时间:2023-12-02 16:09:58 27 4
gpt4 key购买 nike

我非常喜欢 Haskell,但是让我担心 Haskell 的主要问题之一是推理空间使用的困难。基本上,重击和递归的可能性似乎会造成一些棘手的情况,似乎必须非常小心地添加正确的严格性,以免程序在特定输入上耗尽内存。

我喜欢 C/C++ 的一点是,我可以很快相当确定程序空间使用的上限,特别是在避免递归的情况下。变量一目了然。

我想知道是否有一种方法可以创建 Haskell 的类型安全“命令式”子集,它没有 thunk,而且是严格的。

我明白了Data.STRef给出可变单元格,但据我了解,这些单元格本身仍然是惰性的,并且可以包含 thunk。我正在考虑强制这些单元格中的数据严格,但我不确定如何以类型系统强制执行的方式执行此操作。

我在想类似“严格单子(monad)”的东西,但也许这不是正确的形式。

最佳答案

我相当确定在 Haskell 中实现这一点几乎是不可能的,因为 Haskell 默认情况下确实假设了惰性。例如,标准库中的一些函数在严格的语言中是无用的,因为如果您请求它们的整个输出,它们实际上保证不会终止。因此,如果您有 Haskell 的“严格子集”,则很难与任何其他 Haskell 代码进行互操作,而且无论如何您实际上都会使用另一种语言进行编程。

另外,我认为你在考虑单子(monad)时找错了地方。 Data.STRef 确实与避免重击和懒惰无关。事实上,您想要的(严格性)与命令性无关,并且您不需要可变性或单子(monad)来获得它。有些编程语言和 Haskell 一样纯粹,但到处都是严格的。我曾经合作过的一个是 Mercury ,例如。

关于haskell - 类型强制 "strict/imperitive"Haskell 子集/版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16096963/

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