-1

목록 이해를 사용하여 하스켈 필터 함수의 구현을 작성하는 방법이 있습니까?필터 함수의 구현 haskell

오류가 계속 나타나며 해결 방법에 어려움을 겪고 있습니다. 이것은 내가 가지고있는 것입니다 :

filter' :: (a -> Bool) -> [a] -> [a] 
filter' _ [] = [] 
filter' f xs = [f x | x <- xs] 

모든 안내 또는 링크를 많이 주시면 감사하겠습니다. 로

+2

haskell의 목록 보 완성에 대한 좋은 개요 : https://wiki.haskell.org/List_comprehension – randomir

+1

이 질문을 스스로 해결하는 데 더 많은 노력을 기울여야합니다. 마치 마지막 질문에서 제공 한'map' 구현 (https://stackoverflow.com/a/46876590/5743988)에서 솔루션을 복사 한 것 같습니다. 앞으로 사람들이 당신을 더 잘 도울 수 있도록 왜 그루터기가되었는지에 대한 생각 과정을 더 설명하십시오. – 4castle

답변

7

예, 당신이 그것을 쓸 수 있습니다 :

filter' :: (a -> Bool) -> [a] -> [a] 
filter' f xs = [x | x <- xs, f x]

당신은 부울로 평가 지능형리스트에서 식을 추가 할 경우, 당신은 지능형리스트에 필터를 추가 한 : f x가 평가 된 경우에만 True 여기에 x을 추가합니다. filter' _ [] = []를 작성

주 쓸모가 : 당신이 빈리스트를 제공하는 경우 xx <- xsxs에서 값을 선택하지 않습니다 때문에, 다음 목록의 이해도, 빈리스트를 반환합니다.

일반적으로 filter :: (a -> Bool) -> [a] -> [a] 내장을 사용하는 것이 좋습니다.