한 조건 자에 따라 두 목록의 요소를 비교하고 다른 조건 자에 따라 선택하려면 어떻게해야합니까?

kureta

내가 달성하려는 것은 ((==) `on` fst)이 술어를 충족시키는 쌍과 두 개의 튜플 목록을 비교 하고 만족하는 것을 선택하는 것입니다.(min `on` snd)

Mnoronha

일반적인 경우를 해결하기 위해 두 개의 술어를 포함하는 튜플과 패턴 일치하는 필터의 수정 된 버전을 정의하고 둘 다 충족되는지 확인할 수 있습니다.

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관