Итак, я хочу определить несколько классов данных для моей игры / задания астероидов:
data One = One {oneVelocity :: Velocity, onePosition :: Position, (((other properties unique to One)))}
data Two = Two {twoVelocity :: Velocity, twoPosition :: Position, (((other properties unique to Two)))}
data Three = Three {threeVelocity :: Velocity, threePosition :: Position, (((other properties unique to Three)))}
Как вы можете видеть, у меня есть несколько классов данных с некоторыми перекрывающимися свойствами (скорость, положение).Это также означало, что мне приходилось давать им разные имена для каждого класса данных ("oneVelocity", "twoVelocity", ...).
Есть ли способ, позволяющий этим типам данных расширять что-то? Я думал об использовании одного типа данных с несколькими конструкторами, но некоторые из этих текущих классов данных сильно отличаются, и я не думаю, что они должны находиться в одном классе данных с несколькими конструкторами.