2014-02-25 1 views
5

그래서 Clojure에서 ADT를 수행하는 방법을 알아 내려고 노력하면서 이전 Clojure-contrib을 실행했다. 좋아, 별거 아니 었어. 교체 된 clojure-contrib의 카탈로그 라이브러리를 살펴 보아라. 그러나 나에게있어서, 새로운 clojure-contrib 라이브러리에서 defadt가 마이그레이션 된 부분을 발견 할 수 없다.defadt는 어디에서 새로운 clojure contrib에 들어갔습니까?

그래서 어디로 이전 되었습니까?

저는 주위를 둘러 보았습니다. http://dev.clojure.org/display/doc/Clojure+Contrib+Libraries하지만 알아낼 수는 없습니다.

보너스 포인트는 나에게 연결하기 위해 alembic.still/distill에게 넘겨 줄 문자열을 줄 수있는 경우입니다.

+3

이것은 아마도 Programmers.SE에 게시해야합니다. –

+0

: 프로그래밍 라이브러리에 관한 매우 구체적인 질문입니다. 그건 분명히 SO에 대한 주제입니다. – mikera

답변

4

Clojure의 일반적인 스타일은 ADT를 정의하는 것이 아닙니다. defadt 기능을 이전 버전/비추천 버전으로 간주합니다.

대신 Clojure 맵 또는 벡터를 사용하여 데이터 구조를 정의하십시오.

또는 프로토콜을 사용하는 다형성 발송에 사용할 수있는 명명 된 유형이 필요한 경우 deftype 또는 defrecord을 사용할 수 있습니다. 이것은 ADT와 유사한 동작을 얻는 유연하고 빠른 방법입니다.

+0

이것은 내가 의심했던 것입니다. 그러나 그것을 명확히 해 주셔서 감사합니다! 나는 더 많은 관용적 인 기록과 유형을 고수 할 것입니다. –