haskell中的顶级可变变量

我有一个C ++程序多次调用我的Haskell程序。 但是来自第一次呼叫的一些数据需要保留以用于随后的呼叫。 我知道Haskell默认不支持顶级可变变量,但我想我仍然需要类似的东西。 (把我的状态写入一个文件并重新读取会有用,但我想要更多的本地文件)

在hackage中,我发现像全局变量或安全全局变量这样的库,但它们都显得很老,并且依赖于我已经使用的旧版本的包。 这个问题有没有规范的解决方案?

理想情况下,我想要有顶级功能:

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

(我想我还应该提到一切都是在FFI中的一个hs_init()调用中完成的,所以Haskell程序并不真正在调用之间退出)


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

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

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

链接地址: http://www.djcxy.com/p/43245.html

上一篇: Top level mutable variables in haskell

下一篇: What are design patterns for tasks with storing some state in haskell