新类型有自己的 data constructor (literals 可以看成特殊的 data constructor),由这一点来区分是否创建了新类型。
-
data
创建了新类型,可以有多个 data constructor。 -
newtype
创建了新类型,只能有一个 data constructor,同时新类型的内存布局与原来的类型相同。 -
type
没有创建新类型,只是建立了 alias,没有新的 data constructor。
type
常用于语义化类型,是业务逻辑层的概念。
type ID = Int |
newtype
在编译期创建新类型,但差异在运行期被抹去。带有一个构造器。
newtype ID' = ID' Int |
OOPS!
A comment box should be right here...But it was gone due to network issues :-(If you want to leave comments, make sure you have access to disqus.com.