2
하스켈을 배우며 this example으로 혼란 스럽습니다.유형의 값 대 값 생성자
는 다음과 같은 고려 : Frank
Tofu
의 인스턴스를 만들 때 왜 그
class Tofu t where
tofu :: j a -> t a j
data Frank a b = Frank {frankField :: b a} deriving (Show)
instance Tofu Frank where
tofu x = Frank x
, 우리는 (지금까지 내가 이해) 제공, 타입 생성자 Frank x
대신 값 생성자, 즉 tofu x = Frank {frankField = x}
?
아 :
이 ... 다음 필드는 당신이 할 수 있도록, 그들을 쓴 순서대로 표시 ! 타입과 값 생성자가 모두 Frank라는 이름으로 혼란 스러웠다 고 생각합니다. 고맙습니다! – d125q예, 조금 혼란 스러울 수 있습니다. 형식 서명/클래스 선언/etc에 CapitalizedIdentifier가있는 경우 유형 이름이 될 것이고 다른 곳에서는 생성자가 될 것이라는 점을 기억하십시오. – porges
@ d125q보다 구체적으로, 유형 이름은 값 생성자 이름 및 함수/값 이름과 동일한 네임 스페이스를 공유하지 않습니다. – bheklilr