小编red*_*der的帖子

记录更新如何在内部表现?

data Thing = Thing {a :: Int, b :: Int, c :: Int, (...) , z :: Int} deriving Show

foo = Thing 1 2 3 4 5 (...) 26
mkBar x = x { c = 30 }

main = do print $ mkBar foo
Run Code Online (Sandbox Code Playgroud)

当我以这种方式改变foo时复制了什么?而不是直接改变结构的一部分.

Data Thing = Thing {a :: IORef Int, b :: IORef Int, (...) , z :: IORef Int}
instance Show Thing where
(...something something unsafePerformIO...)

mkFoo = do a <- newIORef 1
           (...) …
Run Code Online (Sandbox Code Playgroud)

haskell

9
推荐指数
2
解决办法
244
查看次数

标签 统计

haskell ×1