首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解抽象类型

理解抽象类型
EN

Stack Overflow用户
提问于 2017-11-04 14:12:25
回答 1查看 81关注 0票数 2

看看Haskell中的并行并行编程,我看到了:

代码语言:javascript
复制
data STM a -- abstract
instance Monad STM -- among other things

atomically :: STM a -> IO a

data TVar a -- abstract
newTVar   :: a -> STM (TVar a)
readTVar  :: TVar a -> STM a
writeTVar :: TVar a -> a -> STM ()

abstractSTMTVar中的含义是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 15:17:04

抽象数据类型是不公开其实现的类型;只提供类型以及生成和使用该类型的一些操作,但构造函数本身不能供您使用。

这样做通常有以下两个原因之一:

  1. 关于该类型的哪些值是有效的,类型系统不能保证哪些值是有效的,并且必须通过仔细的编程来保证哪些值是有效的。如果提供的每个操作都保留了它们,那么只有库作者需要小心,库的用户可能是无忧无虑的。
  2. 数据的表示可能会发生变化。如果该类型是抽象的,那么库的未来版本可以自由地更改该类型的实现方式,而不必担心破坏现有的程序,只要新的表示仍然可以支持现有的构建和销毁操作。
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47111642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档