HashSet
HashSet
튜플 기반의 HashSet 구현 모듈이에요. 이 모듈은 deprecated(더 이상 사용 권장되지 않음) 상태예요. MapSet 모듈을 대신 사용하세요.
출처: HashSet
본문
HashSet는 과거 Elixir에서 고유한 요소들의 집합(set)을 저장하는 해시 기반 자료 구조로 쓰이던 모듈이에요. Elixir 1.2부터 MapSet이 그 역할을 대체하면서 더 이상 쓰이지 않게 됐어요.
지금은 어떤 코드에서도 이 모듈을 새로 사용할 필요가 없어요. 고유한 요소 모음을 다루려면 MapSet을 쓰면 돼요. HashSet가 제공하던 동작, 즉 요소 추가·삭제, 집합 합집합·교집합·차집합, 요소 포함 여부 확인 등은 모두 MapSet 모듈에서 지원돼요.
MapSet은 같은 해시 집합의 아이디어를 현대 Elixir의 표현 방식으로 구현한 거라, 기존 HashSet 코드를 MapSet으로 옮기는 건 거의 항상 옳은 선택이에요. 함수 호출을 HashSet → MapSet으로 바꾸고, 필요에 따라 집합 생성 방식을 MapSet.new/1 스타일로 맞춰 주면 돼요.
이 모듈은 API 호환을 위해 구현만 남아 있을 뿐, 새 코드에서 선택할 이유가 없는 모듈이에요. 새로 작성하든 유지 보수하든, 집합이 필요하면 MapSet으로 통일하는 게 가장 깔끔해요.
다시 말해, 더 이상 쓰이지 않는 이 모듈을 마주치는 상황은 대부분 오래된 코드를 읽거나 옮길 때예요. 그런 코드를 만나면 동작을 그대로 유지하면서 MapSet 기반으로 바꾸면 되는데, 두 모듈의 함수 시그니처가 상당 부분 비슷해서 전환이 어렵지 않아요. 예를 들어 HashSet.new/1, HashSet.put/2, HashSet.member?/2 같은 호출은 각각 MapSet.new/1, MapSet.put/2, MapSet.member?/2로 이름만 바꿔도 대부분 그대로 동작해요. 집합 연산(합집합·교집합·차집합)도 MapSet.union/2, MapSet.intersection/2, MapSet.difference/2에 대응돼요.
정리하면, HashSet은 Elixir가 초기 버전에서 쓰던 집합 모듈이고, 지금은 MapSet이 정식 역할을 맡고 있어요. 새 코드에서는 반드시 MapSet을 쓰세요.