类型播放器和数据播放器之间的区别?

Different Between type Player and data Player?

有什么区别:

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
                      }

我什么时候使用每一个?

type Player = (String, Int)

为类型 (String, Int) 创建一个新的 name。这不是一件非常有用的事情。玩家可能会对任何这样的对感到困惑,并且类型系统不会发现错误。不可能为 Player 编写不适用于 (String, Pair).

的 class 个实例
data Player = Player { name :: String
                      , number :: Int
                      }

创建一个全新的类型,Player,带有一个名为 Player 的构造函数,它有两个命名字段。这一件有用的事情。

我对初学者的建议:不要为 type 烦恼。它主要与某些高级语言功能结合使用,而且从来都不是很令人兴奋。