Что не так с этим классом / экземпляром?

У меня есть следующее:

data Vector3 t = Vector3 { ax, ay, az :: t }
data Point3 t = Point3 { x, y, z :: t }
data Ray3 t = Ray3 { ori :: Point3 t, dir :: Vector3 t }
data Sphere t = Sphere { center :: Point3 t, radius :: t }

Мне нужен класс типа Shape, поэтому я сделал следующее:

class Shape s where
      distance :: s -> Ray3 t -> t

distance принимает форму и луч и вычисляет расстояние до формы вдоль данного луча. Когда я пытаюсь создать экземпляр, это не работает. Вот что у меня есть на данный момент:

instance Shape (Sphere t) where
         distance (Sphere center radius) ray = -- some value of type t --

Как мне создать экземпляр Shape? Я перепробовал все, что мог придумать, и получаю всевозможные ошибки.

5
задан Arlen 6 October 2011 в 05:07
поделиться