查看以下代码:
data Point = Point Float Float deriving (Show)
data Shape = Circle Point Float | Rectangle Point Point deriving (Show)
Run Code Online (Sandbox Code Playgroud)
这本书的代码示例附带以下文字:"了解你是一个很好的Haskell"一书:
请注意,在定义点时,我们对数据类型和值构造函数使用相同的名称.这没有特殊含义,但如果只有一个值构造函数,则通常使用与该类型相同的名称.
现在我的假设是data Point = ...数据类型,并且... = Point Float...是值构造函数.
我的问题是:在Haskell中对数据类型和值构造函数使用相同的名称是否常见?
根据我有限的经验:是的.这也是有道理的.你为什么要Point在这里打电话?它完美地描述了数据类型,并且也清楚地用于这样的模式匹配
myFunc :: Point -> Bool
myFunc (Point 0 0) = True
myFunc _ = False
Run Code Online (Sandbox Code Playgroud)
它是明确的,因为您只能将数据类型放在函数的类型签名中.