haskell - 类型构造函数可以与值构造函数相同吗?

标签 haskell types

Haskell tutorial, 我看到这样的表达

data Vector a = Vector a a a deriving (Show)

可能不一样,但非常相似。我有点困惑。谁能解释一下它在做什么吗?

最佳答案

data Vector a = MkVector a a a 

为任何类型a定义参数化数据类型Vector a

它还为我们定义了一种创建该类型值的方法:使用带有三个相同类型参数的数据构造函数 MkVector

对于任何类型 a,使用三个 a 类型值调用 MkVector 会生成 Vector a 类型的值>。例如,

let a :: Int ; a = 1 ; v = MkVector a 3 4 in v :: Vector Int

let a :: Float ; a = 1 ; v = MkVector a 3 4 in v :: Vector Float

碰巧我们也可以使用与类型 Vector 中相同的名称作为数据构造函数的名称。一开始这可能会令人困惑。

关于haskell - 类型构造函数可以与值构造函数相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51447920/

相关文章:

list - haskell 列出字符频率

c# - 如何告诉构造函数它应该只使用原始类型

c# - 转换为动态类型变量的通用列表

haskell - 在 Haskell 中使用 map 应用常量减法

haskell - react 香蕉时间延迟

function - 将一个列表映射到另一个列表(在 Haskell 中,+抽象解决方案) - 'map reduce' ?

eclipse - 在IntelliJ IDEA 10中显示 "raw type"警告列表

javascript - 获取@Media 打印类型的 innerHTML

java - 缓冲图像 INT/4BYTE/USHORT

haskell - 想免费写一个功能点,GHCI不认可