Haskell,typesig Map.Map,LYAH

时间:2018-04-30 15:55:45

标签: haskell types declaration

我没有完全得到Map.Map部分。我理解当我导入限定为Map时,我需要将地址作为地址加上前缀。' Map。'但是,通常后面跟着一个函数(例如,查找'),这里使用了两种类型。

import qualified Data.Map as Map 
phonebook :: Map.Map String String

我得到那个电话簿需要一个字符串和一个字符串,但是严格地说Map.Map表示它是一个关联列表,还是有更多呢?为什么省略箭头?

2 个答案:

答案 0 :(得分:7)

Data.Map导出名为Map的类型:

data Map k a

其隐藏的定义。限定导入意味着要引用该类型,您需要在as之后添加名称。所以Map.Map只是有限地图类型构造函数的名称。

Map.Map String String

只是从字符串到字符串的有限映射类型。

答案 1 :(得分:3)

phonebook的类型为Map String String(如果您要使用import Data.Map (Map)导入)。也就是说,它是StringsStrings的映射。

更一般地说,Map类型构造函数可以写成Map key value,其中keyvalue可以被认为是类型参数尚未应用< / em>的。因此,我们说Map * -> * -> *,其中星星本身就是具体类型。

所以...

import qualified Data.Map as Map 

phonebook :: Map.Map String String   -- passing "arguments" to Map here
phonebook = undefined

phonebook*种类。