[Haskell] Одинаковые реализации классов типов
От: Tonal- Россия www.promsoft.ru
Дата: 11.09.09 10:12
Оценка:
type SidType = Int

class (Eq a, Ord a) => Sided a where -- Данные имеющие '''SID'''
  sid :: a -> SidType

data SympText = SympText {
  tSid :: SidType,
  text :: String
}

instance Sided SympText where
  sid = tSid
instance Eq SympText where
  a == b = sid a == sid b
instance Ord SympText where
  compare a b = compare (sid a) (sid b)

type Category = Int
data SympCats = SympCats {
  cSid  :: SidType,
  categ :: Category
}

instance Sided SympCats where
  sid = cSid
instance Eq SympCats where
  a == b = sid a == sid b
instance Ord SympCats where
  compare a b = compare (sid a) (sid b)

Здесь видно, что для каждой стркуруры Symp* приходится рисовать совершенно одинаковые определения Eq и Ord.
Можно ли как-то это унифицировать?
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.