map :: (a -> b) -> [a] -> [b]
map f xs = [f x | x <- xs]
此定義來自Haskell by Hutton編程(第62頁)。在它的類型Haskell映射函數類型的詳細信息
看,我瞭解的功能是如何發生是一個函數,第二個參數是一個列表的第一個參數。
但確實上述類型變得(a -> b) -> ([a] -> [b])?
這樣的地圖需要的功能,並返回一個函數,它[a]
並返回[f x|x <- xs]?
,爲什麼它(a -> b) -> [a] -> [b]
,而不是(a -> a) -> [a] -> [a] ?
例如,書中使用map(+1)[1,3,5,7]
有人能請詳細解釋這個功能呢?
'A - > B'並不意味着兩種*必須*是不同的,只是他們可以* *是不同的。 – chepner