类型(地图.地图)

Nic*_*rus 0 haskell function-composition

我试图理解表达式的类型(map . map).由于类型(.)(b -> c) -> (a -> b) -> a -> c我不明白这是如何工作与地图功能,因为map取不与功能适应两个参数(b -> c)(a -> b).

use*_*886 5

引用GHCI:

Prelude> :t map.map
map.map :: (a -> b) -> [[a]] -> [[b]]
Run Code Online (Sandbox Code Playgroud)

但对于地图本身,类型是

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

你可以看到

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

所以,如果我们有那个 (.) :: (t2 -> t3) -> (t1 -> t2) -> t1 -> t3

然后:

  • 类型t1(a -> b)
  • 类型t2([a] -> [b])
  • 类型t3([[a]] -> [[b]])