gpt4 book ai didi

haskell - haskell 中的顶级可变变量

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

我有一个 C++ 程序多次调用我的 Haskell 程序。但是第一次调用的一些数据需要为后续调用保留。我知道 Haskell 默认不支持顶级可变变量,但我想我仍然需要类似的东西。
(将我的状态写入文件并将其读回会起作用,但我想要更原生的东西)

在 hackage 中,我发现了 global-variables 或 safe-globals 之类的库,但它们看起来都很老旧,并且依赖于我已经使用的旧版本的包。
这个问题有规范的解决方案吗?

理想情况下,我希望拥有顶级功能:

getState :: IO Mystate
writeState :: Mystate -> IO ()

(我想我还应该提到,一切都是在 FFI 中的一次 hs_init() 调用中完成的,因此 Haskell 程序在调用之间并没有真正退出)

最佳答案

您可以创建一个全局可变变量:

myGlobalVar :: IORef Int
{-# NOINLINE myGlobalVar #-}
myGlobalVar = unsafePerformIO (newIORef 17)


haskell wiki
将此作为当前的标准解决方案,同时还讨论替代方案。

关于haskell - haskell 中的顶级可变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034280/

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