{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Morpheus.Types.Internal.Resolving.Event
( Event (..),
Channel (..),
eventChannels,
)
where
import Prelude
( Eq (..),
fmap,
)
data Channel (event :: *) where
Channel :: a -> Channel (Event a c)
data Event e c = Event
{ channels :: [e],
content :: c
}
eventChannels :: Event e c -> [Channel (Event e c)]
eventChannels Event {channels} = fmap Channel channels
instance (Eq ch) => Eq (Channel (Event ch con)) where
Channel x == Channel y = x == y