2012-06-08 4 views
0

2 차원 좌표 벡터의 간단한 표현을 찾고 있습니다. 내 첫 번째 아이디어는 단순한 (c, c) 튜플 이었지만 내 요구에 맞지 않습니다. 은 Functor 및 실용적의2 차원 좌표 벡터의 설계

  • 인스턴스 동일한 의미 (예를 들어, ScreenCoordGameCoord)가 구별 유형을 가지고
  • 능력 :

    이 내가 원하는 것 것입니다.

  • 간단한 데이터 생성자 (예 : ScreenCoord c c)
  • Coord 이상의 제네릭 코드를 작성할 수 있습니다.

잘 모르겠습니다. 내가 시도한 모든 것은 instance 코드를 사용하여 고유 한 형식을 가져 오거나 불필요하다고 생각되는 ScreenCoord (Coord c c)과 같은 긴 데이터 생성자가 필요했습니다.

여기에 이상적인 표현은 무엇입니까?

답변

2

당신은 Tensorvector-space

Vertex2에 관심이있을 수 있으며 버텍스 제품군에서 다른 화면 (하지 벡터)에 점을 나타냅니다. vector-space-openglvector-space의 적절한 인스턴스를 제공합니다.

+0

링크를 제공해 주셔서 감사합니다.하지만 어떻게 'Vertex2'의 '별개의 동의어'를 만들 수 있습니까? '별개의 동의어'가 올바른 용어인지 확실하지 않습니다. – Pubby

+1

@Pubby'newtype'은 형식 검사기가 다른 동일한 형식을 구별하도록 요구하는 메커니즘입니다. –

+0

나는 당신을 이해하는지 모르겠다. 기존 데이터를 랩핑하고 다른 인스턴스를 생성하려면'newtype' 선언이 있습니다. [NewtypeDeriving] (http://hackage.haskell.org/trac/haskell-prime/wiki/NewtypeDeriving) 언어 확장이 있습니다. 'newtype '(http://hackage.haskell.org/package/newtype) 패키지는'pack' /'unpack'을 사용합니다. 생성자와 같은 함수를 생성 할 수 있습니다. – ony