![](/img/trans.png)
[英]understanding a Haskell function with filter and lambda expressions
[英]Implementaion of filter function haskell
有沒有一種方法可以使用列表理解來編寫Haskell過濾器功能的實現?
錯誤不斷出現,我為如何處理感到困惑。 這就是我所擁有的:
filter' :: (a -> Bool) -> [a] -> [a]
filter' _ [] = []
filter' f xs = [f x | x <- xs]
任何指導或鏈接將不勝感激。
是的,您可以將其編寫為:
filter' :: (a -> Bool) -> [a] -> [a]
filter' f xs = [x | x <- xs, f x]
如果您在列表理解中添加了一個表達式,該表達式的計算結果為布爾值,那么您已經在列表理解中添加了一個過濾器:僅當fx
在此處計算為True
,我們才會在列表中添加x
。
請注意,寫過filter' _ [] = []
是沒有用的:如果您提供一個空列表,則列表推導也將返回一個空列表,因為x
永遠不會從xs
選取x <- xs
。
但是通常最好使用內置filter :: (a -> Bool) -> [a] -> [a]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.