Haskell:在没有实例的模块中使用类型类的函数

时间:2012-10-14 17:18:27

标签: haskell typeclass

我有一个模块,用于定义和导出类型和类型类,如下所示。问题是我似乎无法在此模块中使用该类的函数,因为还没有该类的实例。

这是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)

1 个答案:

答案 0 :(得分:8)

您需要缩进aabb

class Boundable a where
    aabb ∷  a → AABB

或使用大括号:

class Boundable a where {
aabb ∷  a → AABB
}