하스켈에서 사용할 이중 연결 에지 목록 데이터 구조를 구현하고 싶습니다. 이 데이터 구조는 평면에서 선 배열의 토폴로지를 관리하는 데 사용되며면, 모서리 및 정점에 대한 구조를 포함합니다. 그것은이 데이터 구조에 좋은 인터페이스와 같은 날 것으로 보인다freek haskell STrefs
는
overlay :: Arrangement -> Arrangement -> Arrangement
같은 기능, 유형 Arrangement
으로 될하지만 일반적인 구현은 각면은 참조가 있습니다 (예를 들어, 참조에 크게 의존 인접한 가장자리).
이 작업을위한 이상적인 방법은 변경 가능하고 변경 불가능한 배열과 비슷합니다. Arrangement
데이터 구조의 내부는 기능적 데이터 구조로 구현되지만 배열을 변경하는 작업은 "고정 해제 "그들은 모나드 내에서 새로운 가변 인스턴스를 생성합니다 (이상적으로는 COW 마술을 사용하여 효율적으로 작업 할 수 있습니다).
그래서 제 질문은 다음과 같습니다
(1) 동결 및 배열에 대한이 같은 작은 힙을 고정을 해제하는 방법이 있나요? (2) 그렇지 않은 경우 더 좋은 방법이 있습니까?
평소 매듭 트릭에 관심이없는 것 같지만 저급 수준입니다. –
하스켈에서 유사한 데이터 구조를 만드는 데 관심이 있습니다. 내가 이해할 수있는 유일한 두 가지 방법은 매우 우아하지만 비효율적 인 매듭 방식을 사용하거나지도 유형 데이터 구조 (간접 지정)로 ID 기반 접근 방식을 사용하는 것인데 이는 우아함의 관점에서 볼 때 불만족 스럽지만 아마도 잘 작동합니다. 다른 접근법을 염두에두면 더 많이 듣고 싶습니다. – MFlamer
Martin Erwig의 Functional graph libary를 보셨습니까? (http://web.engr.oregonstate.edu/~erwig/fgl/haskell/) –