У меня есть следующее:
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? Я перепробовал все, что мог придумать, и получаю всевозможные ошибки.