2012-10-14 7 views
1

아래에 표시된대로 유형 및 유형 클래스를 정의하고 내보내는 모듈이 있습니다. 문제는 클래스의 인스턴스가 아직 없기 때문에이 모듈에서 클래스의 함수를 사용하는 것처럼 보일 수 없다는 것입니다.하스켈 : 인스턴스가없는 모듈에서 유형 클래스의 함수 사용

이는 GHC 오류입니다 :이 문제를 해결

있나요 어떤 식 으로든 "`AABB '에 대한 유형 서명은 동반 바인딩이 부족하다"? 감사.

module AABB (
AABB 
,Boundable(..) 
,aabb 
,consume 
) where 

type AABB = (Vec3,Vec3) 

class Boundable a where 
aabb ∷ a → AABB 

consume ∷ (Boundable a) ⇒ AABB → a → AABB 
consume (v0,v1) x = (minV v0 v2, maxV v1 v3) 
    where (v2,v3) = aabb x 

maxV ∷ Vec3 → Vec3 → Vec3 
maxV (Vec3 x0 y0 z0) (Vec3 x1 y1 z1) = Vec3 (max x0 x1) (max y0 y1) (max z0 z1) 

minV ∷ Vec3 → Vec3 → Vec3 
minV (Vec3 x0 y0 z0) (Vec3 x1 y1 z1) = Vec3 (min x0 x1) (min y0 y1) (min z0 z1) 
+0

? Vec3에 대한 정의가 없기 때문에 우리에게 모든 것을 보여주지 않는다고 가정합니다. – augustss

+0

사과, 나는 예제에서 Vec3 정의를 놓쳤다. – MFlamer

답변

8

들여 쓰기가 필요합니다. aabb.

class Boundable a where 
    aabb ∷ a → AABB 

또는 사용 괄호 :

당신이 겪고있는 문제가 무엇
class Boundable a where { 
aabb ∷ a → AABB 
} 
+0

감사합니다. 나는 그것이 단순한 느낌이었다. – MFlamer