为什么可变的数据结构和其他可变性在函数式语言中使用IO表示?我正在研究例如Haskell的IORef或Idris的IOArray。我不认为这是一个历史或设计问题,我不太明白为什么IO适合突变-或者更确切地说,为什么突变在封装在IO中时变得纯粹。
IO
IORef
IOArray
hwazgwia1#
你不需要用IO来表示它们。也可以用ST来表示它们。但是你显然可以用IO来表示它们,这样就可以实现任何不好的副作用。所以如果你在IO中工作,在那里也做突变是最简单的,这样你就不需要担心将不同的monad焊接在一起。如果你还没有使用IO,你应该使用ST。
ST
1条答案
按热度按时间hwazgwia1#
你不需要用
IO
来表示它们。也可以用ST
来表示它们。但是你显然可以用IO
来表示它们,这样就可以实现任何不好的副作用。所以如果你在IO
中工作,在那里也做突变是最简单的,这样你就不需要担心将不同的monad焊接在一起。如果你还没有使用IO
,你应该使用ST
。