1 년이 넘는 정신적 논쟁 끝에 마침내 하스켈을 제 프로그래밍 언어의 기본 프로그래밍 언어로 간주 할 정도로 충분히 이해할 수있었습니다. 나는 그것을 절대적으로 좋아한다.Haskell과 기능적으로 서로 데이터 세트를 비교하십시오.
하지만 기능적인 방식으로 매우 구체적인 작업을 수행하는 데 여전히 어려움을 겪고 있습니다.
단순화 된 예 :
Set = [("Bob", 10), ("Megan", 7), ("Frank", 2), ("Jane", 11)]
나는 서로 이러한 항목을 비교하고 싶습니다. C 나 Python과 같은 언어를 사용하면 아마도 복잡한 루프를 만들지 만, 어떤 접근법 (지도, 배, 목록 이해력)이 함수형 언어를 사용하는 것이 가장 좋고 효율적인지는 확실치 않습니다. 여기
코드의 샘플 내가 작업을 시작이다 : 이run xs = [ someAlgorithm (snd x) (snd y) | x <- xs, y <- xs, x /= y ]
술어 자체로 항목을 비교 한 지능형리스트를 유지하지만 이미왔다 항목을 비교하기 때문에 기능은 매우 효율적이지 않다 비교. 예를 들어. Bob과 Megan을 비교 한 다음 Megan과 Bob을 비교합니다.
이 문제를 해결하는 방법에 대한 조언은 크게 감사하겠습니다. 당신이 당신의 데이터 유형에 대한 주문이있는 경우
당신은 비교하고 싶지만 비교 결과로하고 싶은 것을 말하는 것은 아닙니다. 귀하의 견본에서 그것은 당신이 목록에서 두 개의 다른 요소의 모든 선택을보고 싶다는 것 같습니다. 그게 다야? –
예, "역방향"선택은 아닙니다. 밥과 메간, 밥과 프랭크, 밥과 제인 그리고 메간과 프랭크, 메간과 제인 그리고 프랭크와 제인을 비교해보고 싶습니다. 이것은 접을 수있는 것처럼 보이지만 확실하지 않습니다. –