我想手动导出类型:
f1 x xs = (filter . (<)) x xs
我们第一次看到x
,所以:
x :: t1
然后(<)
有这种类型:
(<) :: Ord a1 => a1 -> a1 -> Bool
我们只能说(< x)
是否可以统一以下类型:
t1 ~ a1
然后
x :: a1
所以
(<x) :: Ord a1 => a1 -> Bool
过滤器有这种类型
filter :: (a2 -> Bool) -> [a2] -> [a2]
第一次看到xs,所以:
xs :: t2
我们只能说(filter . (<)) x xs
是否可以统一以下类型:
a1 -> Bool ~ a2 -> Bool
t2 ~ [a2]
因此,当正确的类型是(询问 GHCi)时,我得到了f1 :: (a2 -> Bool) -> [a2] -> [a2]
与 相同的类型。filter
Ord a => a -> [a] -> [a]
有什么帮助吗?