我已成功地实现(很多尝试之后),一个模拟滤波功能了解Haskell的类型
filter' :: (Num a, Eq a) => (a -> Bool) -> [a] -> [a]
filter' a [] = []
filter' a (x:xs) = if a x
then x : filter' a xs
else filter' a xs
我不清楚地了解是类型声明
filter' :: (Num a, Eq a) => (a -> Bool) -> [a] -> [a]
-- filter' (<10) [1,2,3]
-- output = []
我们传入(<10) [1,2,3]
。但是,在类型声明(a -> Bool)
中,我们传递了一个来自列表的递归方式,输出结果是true或false。然而,表达测试(<10)?
为什么我们不添加另一个Bool?
添加另一个'Bool'在哪里? – Sibi
(<10)是一个函数并具有类型(a - > Bool)。 [1,2,3]是一个列表并且类型为[a]。过滤器函数使用此函数和一个列表并返回另一个列表。 – yokto