【发布时间】:2016-05-04 15:21:13
【问题描述】:
map :: (a -> b) -> [a] -> [b]
map f xs = [f x | x <- xs]
此定义来自 Hutton 的 Programming in Haskell (p.62)。
查看它的类型,我了解该函数如何接受第一个参数是函数,第二个参数是列表。
但是上面的类型会变成(a -> b) -> ([a] -> [b])?所以map接受函数并返回一个接受[a]并返回[f x|x <- xs]?的函数
为什么是(a -> b) -> [a] -> [b] 而不是(a -> a) -> [a] -> [a] ?
例如本书使用map(+1)[1,3,5,7]
谁能详细解释一下这个功能?
【问题讨论】:
-
a -> b并不意味着这两种类型必须不同,只是它们可以不同。
标签: haskell functional-programming