在以下几个方面有什么不同:
A):
type Player = (String, Int)
name:: Player -> String
name (n,_) = n
number :: Player -> Int
number (_,i) = i和B):
data Player = Player { name :: String
, number :: Int
}我什么时候使用每一个?
发布于 2020-11-27 21:15:36
type Player = (String, Int)为类型(String, Int)创建一个新名称。这不是一件非常有用的事情。玩家可能会对任何这样的配对感到困惑,而类型系统也不会发现错误。为Player编写不适用于(String, Pair)的类实例是不可能的。
data Player = Player { name :: String
, number :: Int
}创建一个全新的类型Player,其构造函数名为Player,该构造函数有两个命名字段。这是一件很有用的事。
我对初学者的建议是:不要费心使用type。与某些高级语言特性相结合,它主要是有用的,而且它从来都不是很令人兴奋的。
https://stackoverflow.com/questions/65043785
复制相似问题