为什么这些函数在Haskell中有不同的类型?

Gni*_*ruT 2 lambda haskell types functional-programming

任何人都可以解释为什么这些功能有不同的类型?

fa xs x = filter (>x) xs 
fb xs = \x -> filter (> x)
fc x = filter (> x)
Run Code Online (Sandbox Code Playgroud)

我认为第一个有类型:Ord a => [a] - > a - > [a]但我不确定其余的.有人可以帮我吗?谢谢 ;)

Lee*_*Lee 8

第一个是类型Ord a => [a] -> a -> [a],它过滤输入列表以包含大于参数的所有元素x.

filter (> x)具有类型Ord a => [a] -> [a],即它定义了一个过滤列表以包含大于的元素的函数x.这个测量你的第二个功能有类型

Ord a => b -> (a -> ([a] -> [a])).

请注意xs,与第一个不同,此函数不使用输入,因此第一个参数可以是任何类型.

第三种类型Ord a => a -> [a] -> [a].这就像第一个,除了比较的参数首先出现在list参数之前.