看一下take
函数的type signature
:
ghci> :type take
take :: Int -> [a] -> [a]
这表明它有两个参数,返回值是一个list
。“->
”是右相关(right-associative
),因此实际上也可以把take
函数的type signature
写成这样:
ghci> :type take
take :: Int -> ([a] -> [a])
因此也可以这样理解take
函数:它有一个Int
参数,返回值是另一个函数。这个函数的参数和返回类型是同一个类型的list
。
Int -> [a] -> [a]表示函数有两个参数,参数类型是Int和List, 最后的[a]表示返回值是一个List, 元素类型与第二个参数的元素相同