다음 예를 고려한다 : 첫하스켈 - typeclass를 추가 하시겠습니까?
data Dot = Dot Double Double
data Vector = Vector Double Double
을 난 Vector
추가 할 +
연산자 과부하 싶다. 내가 평등 (==
) 연산자를 오버로드 원한다면, 나는 그것을 좋아 작성합니다
instance Eq Vector where ...blahblahblah
그러나 또한 작업과 유형처럼 Vector
없이 행동을 할 Add
typeclass이 있다면 내가 찾을 수 없습니다. 나도 하스켈 typeclasses의 전체 목록을 찾을 수 없다. 나는 다른 튜토리얼에서 몇 안되는 것을 알고있다. 그러한 목록이 존재합니까?
연산자를 Vector
에서 Dot
까지 추가로드 할 수 있습니까 (오히려 논리적 인 것 같습니까?).
왜 점과 벡터를 구별해야합니까? 다른 사람들이 언급했듯이 (+)는 Num typeclass에 있지만 점과 벡터로 (+)를 구현할 수 없습니다. 두 인수는 모두 같은 유형이어야하기 때문입니다.두 유형을 상호 교환 가능하다고 생각할 수 있다면, 한 유형 만 사용할 수 있으며, 그 유형을 Num의 인스턴스로 만들 수 있습니다. – Boris
아마도 'Num'을 찾고있을지라도, 'Monoid' typeclass가 당신에게 흥미있을 것입니다. 다른 리소스 중에서 [LYAH # monoids] (http://learnyouahaskell.com/functors-applicative-functors-and-monoids#monoids) –