哈斯克尔 - 地图a()

fuu*_*man 1 haskell map

这条线做什么?

Map a ()
Run Code Online (Sandbox Code Playgroud)

我认为"map"是一个适用于列表的函数.

例如:

map (+1) [1,2,3] == [2,3,4]
Run Code Online (Sandbox Code Playgroud)

但那就像

map :: (a->b) -> [a] -> [b] 
map f xs 
Run Code Online (Sandbox Code Playgroud)

但是做什么呢

map a () 
Run Code Online (Sandbox Code Playgroud)

意思?我的意思是,()没有列表.从来没见过这个.

Pau*_*nta 12

Map a ()是一种数据类型:它使用Data.Map类来定义将类型a对象映射到类型对象的数据结构().它类似于C++ std::map,Java HashMap,C#Dictionary等.

另一方面,map是一个功能.如果标识符以大写字母开头,则表示它表示类型或类,否则表示值或函数.

编辑:类型()是0元组(或空元组).如果你有类型(a, b),那将是一个2元组,因为它可以容纳两个元素; (a, b, c)将是一个3元组,等等.0元组是一个"空壳",它不能保存任何值.如果您想知道为什么0元组有用,它主要用于表示缺少信息.

  • @fuuman`()`是一个只有值`()`(同名,不同的东西)居住的类型.不要被它弄糊涂.也就是说,它不会带来任何有用的信息.`Map a()`实际上相当于`Set a`. (6认同)
  • "如果标识符以大写字母开头,则表示它表示类的类型.否则它表示值或函数." 那不太准确.类型变量(类型)以小写字母开头,构造函数(值为)以大写字母开头.某种东西是类型还是值的区别取决于它遇到的位置(即它是在`::`之后,它是一个类型),而不是它开始的字母. (2认同)