簡體   English   中英

過濾功能haskell的實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM