priority-sync-0.2.1.0: PrioritySync/Internal/RoomGroup.hs
{-# LANGUAGE TypeFamilies, UndecidableInstances #-}
module PrioritySync.Internal.RoomGroup
(RoomGroup(..))
where
import PrioritySync.Internal.UserData
import PrioritySync.Internal.RoomCore
class RoomGroup m where
roomsOf :: m -> [Room (UserData m)]
instance RoomGroup (Room u) where
roomsOf m = [m]
instance (RoomGroup rs) => RoomGroup [rs] where
roomsOf = concatMap roomsOf
instance (UserData c ~ UserData m,RoomGroup c,RoomGroup m) => RoomGroup (c,m) where
roomsOf (c,m) = roomsOf c ++ roomsOf m