为什么原地突变用`IO`表示?

问题描述 投票:0回答:1

为什么可变数据结构和其他可变性在函数式语言中使用

IO
表示?我正在看例如Haskell 的
IORef
或 Idris 的
IOArray

haskell functional-programming language-agnostic mutation in-place
1个回答
0
投票

您不需要用

IO
来代表它们。可以用
ST
来完成它们。但你可以显然用
IO
来表示它们,这样就可以实现任何肮脏的副作用。因此,如果您无论如何都在
IO
中工作,那么最简单的方法就是在那里进行突变,这样您就无需担心将不同的单子焊接在一起。如果您尚未已经在
IO
中工作,那么您应该使用
ST

© www.soinside.com 2019 - 2024. All rights reserved.