3
숫자 유형 (Float
, Integer
, Double
등)을 나타내려는 유형 클래스에 파라 메트릭 변수가 있습니다.유형 클래스의 매개 변수 변수
유형 및 인스턴스에서 이것을 어떻게 선언합니까?
숫자 유형 (Float
, Integer
, Double
등)을 나타내려는 유형 클래스에 파라 메트릭 변수가 있습니다.유형 클래스의 매개 변수 변수
유형 및 인스턴스에서 이것을 어떻게 선언합니까?
당신은 클래스 자체에 대한 형식 매개 변수를 의미하는 경우, 당신은 클래스 정의의 문맥에 제약 조건을 추가 할 수 있습니다 : 그것은 외설 함수의 유형의 매개 변수 인 경우에, 다른 한편으로
class (Num a) => Foo a where
-- stuff
't에게 클래스 매개 변수는, 당신은 일반적인 방식으로 제약 조건을 추가 할 수 있습니다
class Foo a where
foo :: (Num b) => a -> b -> b
당신이 특정 특정 유형을 제한 할 경우 해당 정말 불가능 - 유형 클래스 "열기"이다, 즉, 인스턴스를 항상 추가 할 수 있습니다. 당신이 할 수있는 최선의 방법은 자신의 클래스 (FooNumbers
또는 그와 같은 것)를 가지고, 원하는 인스턴스만을 작성한 다음, Num
대신에 그것을 요구해야합니다. 그러나 그것은 일반적으로 도움이되지 않습니다.
마지막 경고는 클래스 (Num a) => 옵션에 대한 경고입니까? –
@peroni_santo : 아니요, "Num' 인스턴스가있는 것"대신에 소수의 특정 유형으로 만 제한하려고합니다. 코드에서 제공 한 두 예제 모두 괜찮습니다. –