2013-01-24 2 views
1

[A, B, C] 목록이 있다고 가정합니다.하스켈 : 목록의 대수 데이터 형식?

data V = A | B | C 

감사 : 나는 다음과 같은 의미로 그 목록을 기반으로 대수 데이터 형식을 선언 할 수있는 방법이 있습니까!

+0

어떤 종류의 순열 목록을 생성하고 정확히 어떤 종류의 ADT를 가져올 지에 대한 구체적인 예를 들려 줄 수 있습니까? 런타임에 새로운 ADT를 정의하는 것은 일반적으로 불가능합니다. 그러나 컴파일 타임에 큰 ADT를 프로그래밍 방식으로 생성하려면 Template Haskell을 사용하여 프로그래밍 할 수 있습니다. – shang

답변

4

원하는 것은 추상적 인 데이터 유형이며 동적으로 생성되며 ADT를 사용하는 모든 언어에서 상당히 비표준입니다.

당신이 할 수있는 일은 하나의 생성자를 가진 데이터 타입을 가지고, 그 다음에 스마트 생성자이라고하는 것으로, 생성자에게 전달할 수있는 값에 대한 논리를 부과합니다.

+0

'[a] -> Bool'이 데이터로 저장되는 이유를 모르겠다 – luqui

+0

함수를 매개 변수로 만들지 않으면 어떻게 그러한 생성자를 여러 개 정의 할 수 있습니까? – didierc

+1

'PermList a = PermList [a]'만 사용하십시오. 똑똑한 생성자에서 검사를 수행 할 수 있습니다. 객체를 가지고 수행 할 필요가 없습니다. 목록을 작성한 후에 다시 사용하려는 의도가 없다면 ... – luqui

관련 문제