Цитирование кода из статьи:
instance RenderRoute HelloWorld where
data Route HelloWorld = HomeR
deriving (Show, Eq, Read)
renderRoute HomeR = ([], [])
Как видите, Route
- это связанный тип данных, и да, это означает семейство данных.Взгляните на wiki пример:
Мы определяем класс типов, экземплярами которого являются типы, которые мы можем использовать в качестве ключей в наших общих картах:
class GMapKey k where
data GMap k :: * -> *
empty :: GMap k v
lookup :: k -> GMap k v -> Maybe v
insert :: k -> v -> GMap k v -> GMap k v
Интересной частью является объявление семейства связанных данных класса.Он дает подпись типа (здесь * -> *
) для связанного типа данных GMap k
- аналогично тому, как методы получают подпись типа в объявлении класса.