我已成功地實現(很多嘗試之後),一個模擬濾波功能瞭解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