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