0
아래 그림은 데이터 유형 인스턴스를 사용하는 예 (지루하게 간단한 것)입니까? 즉, 서로 다른 데이터에 대해 서로 다른 동작을 정의 할 수 있습니다.데이터 유형 인스턴스?
그렇지 않은 경우 어떻게 사용할 수 있습니까?
코드 : 그들이 어떤 차이가 없기 때문에
data HealthIndicators = Weight | Age | BloodPressure deriving (Show)
data IrrelevantIndicators = Starsign | BirthMonth | IQ deriving (Show)
class IndicatorTest a where
indicatortest :: a -> Bool
instance IndicatorTest HealthIndicators where
indicatortest Weight = True
indicatortest Age = True
indicatortest BloodPressure = True
instance IndicatorTest IrrelevantIndicators where
indicatortest Starsign = False
indicatortest BirthMonth = False
indicatortest IQ = False
형식 안전 (평등) (https://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#t:Eq), 주문 등을 쉽게 정의 할 수 있습니다. 타입 클래스가 더 높은 종류의 유형 (예 : [monads] (https://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#t)과 유사 할 수 있다는 사실을 알지 못합니다. : 모나드) 또는 화살표) – Alec
글쎄, 그건 사실이지만 일반적으로 두 가지 다른 기능을 사용합니다. 또는 다른 모듈에 두 개의 동일한 이름 함수를 정의하십시오. 대다수의 경우, 우리는 OOP처럼 동적 인 디스패치가 필요하지 않습니다. 여전히 귀하의 예는 기술적으로 정확하지만 예를 들어 'Ord, Eq, Show, Monoid, ... '는 훨씬 더 흥미롭고 일반적입니다. 너는 그들을 보길 원할지도 모른다. – chi
예, 한 가지 가능한 목표는 다른 데이터 유형에 대한 공통적 인 용도를 찾는 것입니다. 이것은 데이터 유형의 원래 작성자가 상상조차하지 않았던 것을 사용하는 것일 수도 있습니다. 즉,이 예제가 멋진 데이터 모델을 구성한다고 확신하지는 않습니다. – Ingo