Haskell坚持理解类型同义词

时间:2018-04-26 06:49:55

标签: haskell

从LYAH书中,参数化类型同义词: 我理解:

type MyName = String

但这个例子我没有得到:

type IntMap v = Map Int v -- let alone it can be shortened

'Map'是一个函数,而不是一个类型,对吗?这让我现在不断地在书中循环。接下来:Map需要一个函数和一个列表来工作,对吗?如果是这样,'v'是列表,那么'Int'是什么?

2 个答案:

答案 0 :(得分:8)

Map是类型的名称。它是associative array,并将T类型的值映射到类型K的值。因此IntMap是具有Map个密钥和Int值的v的类型。地图在某些语言中也称为词典。它们由哈希表,平衡树或其他更奇特的数据结构实现。

这是一个不幸的名称冲突,还有map功能。他们有点做同样的事情,只在不同的环境中。 map通过向其应用函数来转换输入中的值,而Map将输入键转换为输出值。

答案 1 :(得分:1)

有一个名为Map的类型(大写字母为“M”)。还有一个名为map的函数(带有小写“M”)。除了有类似的名字之外,这些都是无关的。尽量不要混淆他们。 ; - )