하스켈 (Haskell)에서 두리스트를 비교하여 어떻게 동일하다는 것을 확인할 수 있습니까? 또한 명령은 중요하지 않아야합니다.하스 켈에서 두 목록을 비교하는 방법은 무엇입니까?
예 :
[1,2] = [2,1]
내가 all (flip elem [1,2,3]) [2,1]
을 시도했지만이 true
반환 ...
감사합니다.
하스켈 (Haskell)에서 두리스트를 비교하여 어떻게 동일하다는 것을 확인할 수 있습니까? 또한 명령은 중요하지 않아야합니다.하스 켈에서 두 목록을 비교하는 방법은 무엇입니까?
예 :
[1,2] = [2,1]
내가 all (flip elem [1,2,3]) [2,1]
을 시도했지만이 true
반환 ...
감사합니다.
위한 좋은 데이터 구조 "모음 순서 또는 반복하지 않고는"모듈 Data.Set
에서입니다 :
import qualified Data.Set as S
sameElems xs ys = S.fromList xs == S.fromList ys
이것은, 그러나, [1]
에 동일하게 [1,1]
을 고려 않습니다하지 않을 수 있습니다 무엇을 네가 원해.
Data.Set의 내부 속성 사용에 대한 좋은 그림입니다. 이 데이터 컨테이너를 사용하여이 작업을 수행 할 수 있지만 인코딩 방법에 대한 단서가 없다는 것을 읽었습니다. 감사합니다. – zurgl
Eq a => Eq [a]
(http://www.haskell.org/ghc/docs/7.4.1/html/libraries/base-4.5.0.0/Data-Eq.html)로서 당신은 평등에 대한 목록을 비교하는 추가 코드가 필요하지 않습니다.
[1,2] == [2,1]
당신이 가방과 같은 목록을 비교하려면
후 가방은 MULTISET, 그래서이 링크 http://stackoverflow.com/questions을 확인하셨습니까 Multiset packageimport "multiset" Data.MultiSet as M
-- or
import "multiset" Data.IntMultiSet as M -- if you deal with Ints
M.fromList [1,2] == M.fromList [2,1]
왜 PackageImports를 사용하고 있습니까? 더 중요한 것은 왜 그것을 언급하지 않고 그렇게하고 있습니까? –
를 찾아/6121256/효율적으로 확인하는 모든 요소가 동일 함 – dreamcrash
주문이 중요하지 않은 경우 여러 개의 봉지로 취급합니다. 아래에 설명 된 작업을 수행하는 패키지가 있습니다. –