2014-04-04 4 views
2

하스켈을 배우고 있는데 class TypeClassName a b where이 맞는지 확실하지 않습니다."class TypeClassName a b 여기서"잘못된 구문입니까?

하스켈에 이와 비슷한 것을 쓰는 것이 합리적입니까?

저는 class TypeClassName a where이 정확한지 알고 있지만, 여분의 b이 있는지 여부는 확실하지 않습니다.

답변

3

다중 매개 변수 유형 클래스 확장을 사용하면이 작업을 수행 할 수 있습니다.

{-# LANGUAGE MultiParamTypeClasses #-} 

사용법 및 요구 사항에 대해서는 실제로 응용 프로그램에 따라 다릅니다. 예를 들어, 유형 패밀리의 경우 linked tutorial에서 실제로이 확장자를 사용해야합니다. 또한,이 wikibook sectionCollection 타입 클래스에서 어떻게 사용되는지를 설명합니다. Collection typeclass를 들어, 다중 매개 변수 유형 클래스는 좋은 유스 케이스를 만든다 :

여기 c
{-# LANGUAGE MultiParamTypeClasses #-} 
class Eq e => Collection c e where 
    insert :: c -> e -> c 
    member :: c -> e -> Bool 

은 목록 및 e 같은 컬렉션 유형 컬렉션 내부의 요소입니다. 그래서 insert과 memebership 테스트 함수를 지원하는 컬렉션은이 typeclass의 인스턴스로 만들 수 있습니다.

+0

재미 있고, 무엇에 좋은가요? – jhegedus

+0

감사합니다. 재미 있습니다. – jhegedus

+0

표준 하스켈 라이브러리의 대부분이 그러한 MPTC를 사용하지 않는다는 사실은 사실입니까? – jhegedus

관련 문제