既然Haskell的数据是不可变的,那么你如何在全局存储一个可以被任何函数修改的列表?你可以将它读取并将其存储在循环中吗?还是将列表写入文件?我需要记录用户点击的按钮数量.
Ben*_*Ben 12
通常你不会,因为正如你所说,Haskell的数据(大部分)是不可变的.
如果您要从列表开始并通过一大堆更新函数运行它,则每个函数都将列表作为参数并返回更新的列表作为结果.然后你有一些协调功能(可能main,如果这是你的所有程序正在做的),它将每个更新的输出提供给下一个更新程序.
可以使用State monad之类的东西来使用隐式状态更新进行编程,或者使用ST Monad中的STRef 或IO Monad中的IORefs 来编程,使用隐式状态更新来实际更新现场内容.但是Haskell程序员通常不希望将大部分程序放在这样的monad中,以便对可写值进行隐式全局访问.