2017-11-29 18 views
2

다음, 예를 들면이 예에서는 하스켈은 Hudak는, 피터슨 Fasel 의해 "A gentle introduction to Haskell 98" 내지 :의 데이터 생성자

data Point a = Pt a a 

'이 편은 무엇인가?' 그거 어디서 났어? 무슨 뜻이에요? 이전에 정의 되었습니까? 아니면 여기서 정의하고 있습니까? 그것은 갑자기 텍스트에 나타납니다 전에 언급하지 않은, 그리고 "Pt 하스켈"에 대한 Google은 포르투갈어로 하스켈 문서를 반환합니다 ;-)

편집 : @unhammer에서 답장 덕분에, 나는 지금이 답변을 참조하십시오 또 다른 질문은 문제를 실제로 잘 설명합니다. here

+0

그 섹션의 앞의 예제에서 '거짓'또는 '녹색'에 관한 것이 아니라 'Pt'에 관한 것입니다. –

+0

나는이 값들을 C에서 'enum'의 일종으로 간주한다 : 가능한 값을 명시 적으로 주면, 그 타입의 변수는'Green' 또는'False' 값을 가질 수있다. 나는'let x = Green'을 쓸 수 있고 x는'Color' 타입입니다. – January

+1

[Haskell Type 대 데이터 생성자] 가능한 복제본 (https://stackoverflow.com/questions/18204308/haskell-type-vs-data-constructor) –

답변

5

Pt은 스스로 작성한 이름입니다. 그것을 사용하여 새 Point을 만듭니다.

λ> data Point a = Pt a a 
λ> let p = Pt 1 2 
λ> :t p 
p :: Num a => Point a 

는 (이 단일 생성자 데이터의 경우, 당신은 또한 종종는 data Point a = Point a a 같은 유형으로 같은 이름을 확인할 수 있습니다.)

당신이 설명하면 질문은 왜 당신의 혼란을 이해하는 데 도움이 될 수 있습니다
+0

멋진. 그러나 이상한. 그러나 lovely. 고맙습니다. 또한 이제는 나머지 파라가 의미가 있습니다. – January

+0

그것에 대해 이상한 점은 무엇입니까? (타입 생성자와 데이터 생성자와 같은 이름을 사용하는 것을 언급하지 않는다면, 익숙해 져야합니다.) – chepner

+0

Pt (명시 적으로 정의하지 않음)를 정의하지 않았기 때문에 이름 만 지정합니다. 그것에 대해 생각할 때 그것은 논리적이지만 형식의 가능한 값을 열거하는 것에서 도약입니다 (예, 열거 형 정의에서 이러한 값은 "값"이 아니지만 단일 데이터 요소를 반환하는 데이터 생성자가되었습니다.). – January