내가 달성하려는 것은 ((==) `on` fst)
이 술어를 충족시키는 쌍과 두 개의 튜플 목록을 비교 하고 만족하는 것을 선택하는 것입니다.(min `on` snd)
일반적인 경우를 해결하기 위해 두 개의 술어를 포함하는 튜플과 패턴 일치하는 필터의 수정 된 버전을 정의하고 둘 다 충족되는지 확인할 수 있습니다.
filter' :: ((a->Bool),(a->Bool)) -> [(a,a)] -> [(a,a)]
filter' (pred1,pred2) = foldr f []
where f = (\x acc -> if pred1 $ fst x then
if pred2 $ snd x then x : acc
else acc
else acc
)
[(1,2),(2,2),(3,3),(3,4)]
첫 번째 술어 odd
와 두 번째 술어가 있는 목록을 다음 과 같이 평가합니다 even
.
>> filter' (odd,even) [(1,2),(2,2),(3,3),(3,4)]
[(1,2),(3,4)]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다