필자는 코드 사용시와 typeclass를 사용하지 않을 때 이해하기가 어렵습니다. 내 말은 은이고, 은 이미 정의 된 타이타닉을 사용하지 않습니다. 예 (매우 어리석은 예), 나는 수행해야합니다타이 클립을 사용해야하나요?
data Cars = Brakes | Wheels | Engine
data Computers = Processor | RAM | HardDrive
class Repairable a where
is_reparaible :: a -> Bool
instance Repairable Cars where
is_repairable (Brakes) = True
is_repairable (Wheels) = False
is_repairable (Engine) = False
instance Repairable Computers where
is_repairable (Processor) = False
is_repairable (RAM) = False
is_repairable (HardDrive) = True
checkState :: (Reparaible a) => a -> ...
checkState a = ...
(물론, 이것이 바보, 불완전 예입니다).
하지만 약간의 사용을 위해 많이 필요합니까? 왜 나는 새로운 데이터 유형과 유형 (인스턴스가있는)을 정의하지 않고 간단하고 기능 만 정의하면 안된다.
이 예제는 너무 간단 합니다만 사실 함수를 정의하는 대신 github에서 하스켈 코드를 검색 할 때 사실 (새로운 데이터 유형 + 유형 + 인스턴스) 같은 것을 종종 봅니다.
그래서 새로운 데이터 유형, 유형 등을 만들고 언제 기능을 사용해야합니까?
감사합니다. 내가 (자신의 인스턴스) 새로운 데이터 유형 및 typeclasses을 정의하지 않고 기능을 간단하게 만 정의하는 일을하지 말아야하는 이유
예! 이것은 아주 완전한 대답입니다, 대단히 감사합니다! 귀하의 "유형 수업을 사용하지 않을 경우 ..."는 특히 좋은 방법을 선택하는 데 도움이 될 것입니다. – vildric
이것은 하나의 방법에 대해서만 형식 표식을 사용하지 마십시오. 비록 이것이 절대적인 엄격한 규칙은 아니지만 일반적인 힌트와 비슷합니다. – MathematicalOrchid
@MathematicalOrchid 그건 하나의 메소드 만 가진 타입 클래스에 대한 법률을 거의 가지지 않기 때문에 "needs laws"규칙의 일부입니다 (연관 법칙이있는 'SemiGroup'과 같은 것을 제외하고) –